Как найти, какие классы реализуют определенный интерфейс в Eclipse?

У меня есть приложение в виде файла JAR со многими зависимостями. По какой-то причине мне нужно декомпилировать одну из библиотек и открыть ее с помощью Eclipse. Для данного интерфейса в проекте существует ли способ найти класс (ы), который его реализует? Возможно, интерфейс реализован в другой библиотеке, которую я еще не декомпилировал. Можно ли сделать это для такого рода классов?

Ответ 1

Щелкните правой кнопкой мыши по интерфейсу и выберите "Открыть тип иерархии". Затем нажмите "Показывать иерархию подтипов".

Ответ 2

Попробуйте Ctrl + T после выбора имени класса; должен работать в Java Perspective.

Ответ 3

Вы можете "Показывать иерархию типов" на элементе (Щелкните правой кнопкой мыши, чтобы выбрать этот параметр или нажмите F4, когда элемент выделен) *.

Однако в этом списке будут перечислены только те объекты, которые указаны (зависимые). Не в других.

Итак, если вы декомпилировали банку, и есть еще одна банка, которую вы не декомпилировали, тогда реализации (интерфейса) в этой банке не будут перечислены.

Кроме того, предположим, что вы декомпилировали банку в качестве проекта, и есть еще один проект, который ссылается на банку, а не на декомпилированный проект, реализации в этом также не будут перечислены.

Итак, вам нужно будет декомпилировать все банки и добавить их в качестве проектов (и добавить ссылки через "Java Build Path" ), чтобы убедиться, что все реализации в баночках по вашему выбору перечислены.

* Иерархия быстрого типа, ctrl + T покажет аналогичную структуру в панели всплывающей подсказки/автозаполнения. Но полная иерархия типов более полезна для типа анализа, который вы намереваетесь сделать.

Ответ 4

В поиске Java есть радио-кнопка "Реализация".

Ответ 5

Или щелкните правой кнопкой мыши и выберите Quick Type Hierarchy для раскрывающегося меню расширения интерфейсов и классов реализации.

Ответ 6

Ctrl + H (опция поиска) Откройте перспективу поиска Java и введите имя интерфейса, нажмите кнопку "Исполнители", и вы обнаружите, какие классы реализуют определенный интерфейс. То же, что и ответ от stackexchanger выше

Ответ 7

Выберите имя класса, затем "F4" в Eclipse (среда Windows)