2014-11-06 4 views
1

Есть ли способ фильтровать подтип иерархии в IntelliJ Idea?Подтип иерархии IntelliJ IDEA подкатегория

Например, я хотел бы сгенерировать иерархию классов для java.util.Map.Entry<K, V>, но хотел бы отображать только общедоступные классы и классы, находящиеся в пакете java.*.

Eclipse, похоже, тоже не поддерживает это, и я не вижу возможности напрямую сделать это из интерфейса IDE, так есть ли способ достичь этого или, возможно, сценарий в самой IDEA?

EDIT: Чтобы прояснить ситуацию, я хотел найти, если в JDK уже есть простая и публичная реализация Entry<K, V>, так что мне не нужно писать собственный код жестокости.

Оказывается, есть два хороших кандидатов (SimpleEntry<K, V> и SimpleImmutableEntry<K, V>, для тех, кто может быть заинтересован), но мне удалось найти их после того, как некоторые кропотливой просеивания через мириады реализаций Entry<K, V> на моем пути к классам (см here).

Я хочу фильтровать такие иерархии глубокого типа в соответствии с именем пакета и модификатором доступа.

ответ

1

Я не уверен, что вы точно пытаетесь достичь, потому что вы говорите о «создания иерархии классов», а затем вы говорите о «показывая только публичные пункты».

Я полагаю, что вы хотели бы, чтобы перейти к Hirarchy Tool Window (нажав CTRL-H от выбранного типа) и фильтрации результатов, так что будут отображаться только типы из требуемого пакета (java.*).

Для этого в панели инструментов Hirarchy на панели инструментов есть «Scope» ComboBox. Нажмите на нее и выберите «Configure...». Появится окно «Scopes», в котором вы можете добавить и настроить новую настраиваемую область, которая будет фильтровать нужные вам типы.

enter image description here

EDIT: я не мог найти в scope languge syntax reference любой вариант для фильтрации на основе модификаторов доступа.

Но я немного искал в googled, и я думаю, вы могли бы искать Structural Search (CTRL + SHIFT + S). Вы также можете использовать здесь "Области действия", как описано выше, а также использовать модификаторы доступа, как это:

общественного класса $ DerivedClass $ реализует запись {}

или

частный класс $ DerivedClass $ реализует Entry {}

Я не использовал его слишком много, но это, вероятно, очень мощный инструмент и поможет вам добиться лучших результатов, чем Hirarchy Tool Window.

Код: here, here и here.

+0

Спасибо, я уточнил первоначальный вопрос. Ваш ответ очень близок к тому, что мне нужно, и этого достаточно, чтобы принять его. Для дополнительного бонуса - есть ли способ дальнейшего фильтрации иерархии областей с помощью модификаторов доступа? Я не мог найти способ сделать это. – quantum

+0

Я обновил свой ответ, возможно, Структурный поиск - это то, что вы ищете. –