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
Kliknij prawym przyciskiem myszy interfejs i wybierz "Otwórz hierarchię typów". Następnie kliknij "Pokaż hierarchię podtypów".
Wypróbuj Ctrl + T po wybraniu nazwy klasy; powinien działać w Java Perspective.
najlepsza odpowiedź! Powinien być oznaczony jako właściwy. –
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ć.
Lub kliknij prawym przyciskiem myszy i wybierz Quick Type Hierarchy
dla rozwijanego menu rozszerzających się interfejsów i implementujących klasy.
Po kliknięciu prawym przyciskiem myszy i wybraniu opcji Hierarchia szybkich typów widzę interfejs nie zaimplementowany w klasie. – Am1rr3zA
W opcji wyszukiwania w języku Java dostępny jest przycisk "Implementors".
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
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
Te odpowiedzi nie zawsze będą w tej samej kolejności ... –
Wybierz nazwę klasy, a następnie "F4" w Eclipse (środowisko Windows)
- 1. JAXB - wygenerowane klasy implementują interfejs
- 2. Jakie metody implementują interfejs bufora w Pythonie?
- 3. wstrzyknąć różnych klas, które implementują ten sam interfejs korzystając Ninject
- 4. Jak ustalić, czy ciąg zawiera konkretny podłańcuch
- 5. Eclipse - znajdź wszystkie klasy rozszerzające interfejs
- 6. Znajdowanie wszystkich klas implementujących konkretny interfejs
- 7. Automatycznie generuj interfejs w Eclipse
- 8. Jak uzyskać klasy potomne, które implementują pewną klasę bazową za pomocą refleksji w skrypcie Type?
- 9. C# - Dodawanie obiektów, które implementują interfejsy do słownika
- 10. Ta sama metoda dla wielu klas, które implementują ten sam interfejs
- 11. Sprawdź, czy klasy Java implementują toString()
- 12. DataGridView nie pokazuje właściwości obiektów, które implementują ICustomTypeDescriptor
- 13. Czy są jakieś języki, które implementują generics _well_?
- 14. Jak ustalić, czy klasa Java implementuje dany interfejs
- 15. Dlaczego nie wszystkie klasy System.Web.UI.WebControl z właściwościami tekstowymi implementują ITextControl?
- 16. Jak sprawdzić, które czcionki zawierają konkretny znak z perl?
- 17. Jak znaleźć, które z moich zależności pobiera konkretny słoik?
- 18. Eclipse: Szablony klasy Java
- 19. Jak znaleźć odniesienia do klasy w Eclipse?
- 20. Jak ustalić, które składniki redystrybucyjne C++ mój program musi uruchomić?
- 21. Jak ustalić scalone komórki w pewnym Row
- 22. Zastosuj aspekt wyłącznie do metod, które mają konkretny atrybut
- 23. Utwórz ogólny interfejs ograniczony do własnej klasy
- 24. Czy istnieje sposób, aby wstępnie ustalić klasy zagnieżdżone w C++?
- 25. Jak ustalić, czy GraphicsEnvironment istnieje
- 26. Jak wdrożyć biegle interfejs z klasy bazowej w C++
- 27. Jak instancję anonimową klasy, która implementuje interfejs w Kotlin
- 28. C# Interfejs Dziedziczenie do klasy abstrakcyjnej
- 29. Które przeglądarki obsługują interfejs API historii HTML5?
- 30. Jak serializować klasy, które zawierały właściwość System.Net.IPAddress?
Po kliknięciu "Pokaż hierarchię podtypów" nic mi nie pokazałem. Po prostu widzę interfejs, a nie klasa zaimplementowana. – Am1rr3zA
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. –
Masz na myśli, że muszę dodać inny plik jar do ścieżki budowania Java? – Am1rr3zA