Frage Wie finde ich heraus, welche Klassen eine bestimmte Schnittstelle in Eclipse implementieren?


Ich habe eine Anwendung als JAR-Datei mit vielen Abhängigkeiten. Aus irgendeinem Grund muss ich eine der Bibliotheken dekompilieren und sie mit Eclipse öffnen. Gibt es für eine bestimmte Schnittstelle im Projekt eine Möglichkeit, die Klasse (n) zu finden, die sie implementiert? Es kann der Fall sein, dass die Schnittstelle in einer anderen Bibliothek implementiert wurde, die ich noch nicht dekompiliert habe. Ist es möglich, dies für diese Art von Unterricht zu tun?


76
2017-09-12 09:00


Ursprung


Antworten:


Klicken Sie mit der rechten Maustaste auf die Schnittstelle und wählen Sie "Typhierarchie öffnen". Klicken Sie dann auf "Untertyphierarchie anzeigen".


96
2017-09-12 09:02



Versuchen Strg+T nach Auswahl des Klassennamens; sollte in Java Perspektive funktionieren.


40
2017-09-12 09:02



Sie können "Typhierarchie anzeigen" auf dem Objekt anzeigen (Rechtsklick, um diese Option auszuwählen, oder drücken Sie F4 wenn das Element markiert ist) *.

Dies führt jedoch nur die Elemente in den Projekten auf, auf die verwiesen wird ("abhängig"). Nicht in anderen.

Wenn Sie also ein Jar dekompiliert haben und es ein anderes Jar gibt, das Sie nicht dekompiliert haben, werden die Implementierungen (der Schnittstelle) in diesem Jar nicht aufgelistet.

Nehmen wir an, Sie haben ein Jar als Projekt dekompiliert und es gibt ein anderes Projekt, das sich auf das Jar und nicht auf das dekompilierte Projekt bezieht. Implementierungen, die darin enthalten sind, werden ebenfalls nicht aufgeführt.

Sie müssen also alle jars dekompilieren und sie als Projekte hinzufügen (und Referenzen über "Java Build Path" hinzufügen), um sicherzustellen, dass alle Implementierungen in den Gläsern Ihrer Wahl aufgelistet sind.

* Schnelle Typhierarchie, Strg  +  T  zeigt eine ähnliche Struktur in einem Tooltip / Autocomplete-Panel. Aber die vollständige Typhierarchie ist für die Art der Analyse, die Sie durchführen möchten, nützlicher.


10
2017-09-12 09:03



Es gibt Radio-Button "Implementors" in der Java-Suche.


7
2018-02-28 14:51



Oder klicken Sie mit der rechten Maustaste und wählen Sie Quick Type Hierarchy für ein Pulldown-Menü zum Erweitern von Interfaces und Implementierungsklassen.


1
2017-09-12 09:04



Strg + H (Suchoption) Öffnen Sie die Java-Suchperspektive und geben Sie den Schnittstellennamen ein. Klicken Sie auf das Optionsfeld Implementors, und Sie werden feststellen, welche Klassen eine bestimmte Schnittstelle implementieren. Entspricht der Antwort vom Stackwechsler oben


0
2017-11-03 16:31



Wählen Sie den Klassennamen, dann 'F4' in Eclipse (Windows-Umgebung)


0
2017-09-20 21:41