Як знайти, які класи реалізують певний інтерфейс у Eclipse?


88

У мене є програма у вигляді файлу JAR з багатьма залежностями. З якоїсь причини мені потрібно декомпілювати одну з бібліотек і відкрити її за допомогою Eclipse. Для даного інтерфейсу в проекті чи існує спосіб знайти клас (и), який його реалізує? Може бути так, що інтерфейс був реалізований в іншій бібліотеці, яку я ще не декомпілював. Чи можна це робити для такого роду занять?

Відповіді:


115

Клацніть правою кнопкою миші на інтерфейсі та виберіть "Відкрити ієрархію типів". Потім натисніть "Показати ієрархію підтипів".


Це мені нічого не показало, коли я натискаю "Показати ієрархію підтипів", я просто бачу, що Інтерфейс не клас реалізував це.
Am1rr3zA

1
Тоді це означає, що жоден клас у Java Build Path проекту не реалізує цей інтерфейс. Eclipse, звичайно, повинен знати про потенційні класи: файл jar, що їх містить, повинен знаходитись у Java Build Path проекту.
JB Nizet

Ви маєте на увазі, що я повинен додати інший файл jar до шляху побудови Java?
Am1rr3zA

5
Так, звісно. Eclipse знає лише про класи в класі. Він не сканує весь ваш жорсткий диск, щоб знайти клас, що реалізує ваш інтерфейс.
JB Nizet

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

47

Спробуйте Ctrl+ Tпісля вибору назви класу; повинен працювати в Java Perspective.


10

Ви можете "Показати ієрархію типів" на елементі (клацніть правою кнопкою миші, щоб вибрати цей параметр, або натисніть, F4коли елемент виділено) *.

Однак тут буде перераховано лише елементи в тих проектах, на які посилаються ("залежні"). Не в інших.

Отже, якщо ви декомпілювали jar, і є інший jar, який ви не декомпілювали, то реалізації (інтерфейсу) у цій jar не будуть перераховані.

Крім того, скажімо, що ви декомпілювали jar як проект, і існує інший проект, який стосується jar, а не декомпільований проект, реалізації в якому також не будуть перераховані.

Отже, вам доведеться декомпілювати всі банки та додати їх як проекти (і додати посилання через "Шлях побудови Java"), щоб переконатися, що всі реалізації в обраних вами банках перелічені.

* Ієрархія швидкого типу, ctrl + T покаже подібну структуру на панелі підказки / автозаповнення. Але повна ієрархія типів є більш корисною для типу аналізу, який ви збираєтеся зробити.


8

У пошуку Java є перемикач "Реалізатори".


3
Як це не відповідає на питання? Відкрийте Java Search, введіть назву інтерфейсу, натисніть «Реалізатори», і ви «знайдете, які класи реалізують певний інтерфейс».
stackexchanger

1

Або клацніть правою кнопкою миші та виберіть Quick Type Hierarchyдля випадаючого меню розширення інтерфейсів та реалізацію класів.


Коли я
клацаю

0

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.