2011-09-12 9 views
67

Mam aplikację jako plik JAR z wieloma zależnościami. Z jakiegoś powodu muszę dekompilować jedną z bibliotek i otworzyć ją za pomocą Eclipse. Dla danego interfejsu w projekcie istnieje sposób na znalezienie klasy, która go implementuje? Może się zdarzyć, że interfejs został zaimplementowany w innej bibliotece, której jeszcze nie zdekompilowałem. Czy jest to możliwe w przypadku tego rodzaju zajęć?Jak ustalić, które klasy implementują konkretny interfejs w Eclipse?

Odpowiedz

90

Kliknij prawym przyciskiem myszy interfejs i wybierz "Otwórz hierarchię typów". Następnie kliknij "Pokaż hierarchię podtypów".

+0

Po kliknięciu "Pokaż hierarchię podtypów" nic mi nie pokazałem. Po prostu widzę interfejs, a nie klasa zaimplementowana. – Am1rr3zA

+0

Oznacza to, że żadna klasa w ścieżce budowania Java projektu nie implementuje tego interfejsu. Eclipse oczywiście musi wiedzieć o potencjalnych klasach: plik JAR zawierający je musi znajdować się w ścieżce budowania Java projektu. –

+0

Masz na myśli, że muszę dodać inny plik jar do ścieżki budowania Java? – Am1rr3zA

37

Wypróbuj Ctrl + T po wybraniu nazwy klasy; powinien działać w Java Perspective.

+2

najlepsza odpowiedź! Powinien być oznaczony jako właściwy. –

10

Możesz "pokazać hierarchię typów" na elemencie (kliknij prawym przyciskiem myszy, aby wybrać tę opcję lub naciśnij F4, gdy element jest podświetlony) *.

Jednak spowoduje to wyświetlenie tylko pozycji w projektach, które są odsyłane ("zależne"). Nie w innych.

Więc jeśli zdekompilowałeś słoik, a jest jeszcze słoik, którego nie dekompilowałeś, to implementacje (interfejsu) w tym słoiku nie będą wymienione.

Załóżmy również, że dekompilowałeś słoik jako projekt i jest inny projekt odnoszący się do słoika, a nie dekompilowany projekt, implementacje w nim również nie będą wymienione.

Musisz więc dekompilować wszystkie słoiki i dodać je jako projekty (i dodać odniesienia za pomocą "Ścieżki budowania Java"), aby upewnić się, że wszystkie implementacje w słoikach do wyboru znajdują się na liście.

* Szybkie Hierarchia typu ctrl + T pokaże podobną strukturę w rodzaju podpowiedzi/autouzupełniania panelu. Ale pełna hierarchia typów jest bardziej przydatna w przypadku rodzaju analizy, którą zamierzasz wykonać.

1

Lub kliknij prawym przyciskiem myszy i wybierz Quick Type Hierarchy dla rozwijanego menu rozszerzających się interfejsów i implementujących klasy.

+0

Po kliknięciu prawym przyciskiem myszy i wybraniu opcji Hierarchia szybkich typów widzę interfejs nie zaimplementowany w klasie. – Am1rr3zA

7

W opcji wyszukiwania w języku Java dostępny jest przycisk "Implementors".

+3

W jaki sposób nie odpowiada na pytanie? Otwórz wyszukiwanie w Javie, wpisz nazwę interfejsu, kliknij "Implementorzy", a "znajdziesz klasy, które implementują konkretny interfejs." – stackexchanger

0

Ctrl + H (Opcja wyszukiwania) Otwórz perspektywę wyszukiwania Java i wprowadź nazwę interfejsu, kliknij przycisk Narzędzia, a zobaczysz, które klasy implementują konkretny interfejs. Taki sam jak odpowiedź z stackexchanger powyżej

+0

Te odpowiedzi nie zawsze będą w tej samej kolejności ... –

Powiązane problemy