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