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


88

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

Ответы:


116

Щелкните правой кнопкой мыши интерфейс и выберите «Иерархия открытого типа». Затем нажмите «Показать иерархию подтипов».


Он ничего не показал мне, когда я нажимаю «Показать иерархию подтипов», я просто вижу интерфейс, а не класс, который его реализовал.
Am1rr3zA

1
Тогда это означает, что никакой класс в пути сборки Java проекта не реализует этот интерфейс. Eclipse, конечно, должен знать о потенциальных классах: файл jar, содержащий их, должен находиться в пути сборки Java проекта.
JB Nizet,

Вы имеете в виду, что я должен добавить другой файл jar в путь сборки Java?
Am1rr3zA

5
Да, конечно. Eclipse знает только о классах в пути к классам. Он не будет сканировать весь ваш жесткий диск, чтобы найти какой-либо класс, реализующий ваш интерфейс.
JB Nizet

Я добавляю другой файл Jar в свой путь сборки Java, но все еще не показываю мне реализацию. и я уверен, что какой-то класс реализует это, потому что через Reflection я могу его использовать.
Am1rr3zA

47

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


10

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

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

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

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

Поэтому вам нужно будет декомпилировать все jar-файлы и добавить их как проекты (и добавить ссылки через «Java Build Path»), чтобы убедиться, что все реализации в jar-файлах по вашему выбору перечислены.

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


8

В поиске Java есть радиокнопка «Разработчики».


3
Как он не отвечает на вопрос? Откройте Java Search, введите имя интерфейса, щелкните «Разработчики», и вы «найдете, какие классы реализуют конкретный интерфейс».
stackexchanger


0

Ctrl + H (параметр поиска) Откройте перспективу поиска Java и введите имя интерфейса, щелкните переключатель «Реализаторы», и вы узнаете, какие классы реализуют конкретный интерфейс. То же, что и ответ от stackexchanger выше


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.