Heim > Java > javaLernprogramm > Wie kann ich zur Laufzeit in Java alle Unterklassen einer Basisklasse finden?

Wie kann ich zur Laufzeit in Java alle Unterklassen einer Basisklasse finden?

Mary-Kate Olsen
Freigeben: 2024-12-07 21:41:13
Original
533 Leute haben es durchsucht

How Can I Find All Subclasses of a Base Class at Runtime in Java?

Klassen finden, die eine Basisklasse zur Laufzeit in Java erweitern

Zur Laufzeit müssen Sie möglicherweise alle Klassen in Ihrer Java-Anwendung finden, die von einer bestimmten Basisklasse erben. Dies kann nützlich sein, um das dynamische Laden von Klassen zu implementieren oder Funktionen hinzuzufügen, ohne vorhandenen Code zu ändern.

In Java ist es nicht einfach, zur Laufzeit eine Liste aller verfügbaren Klassen im Klassenpfad der Anwendung abzurufen. Es gibt jedoch Bibliotheken, die diese Aufgabe erleichtern können.

Eine solche Bibliothek ist org.reflections, die Methoden zum Scannen von Paketen und Erkennen von Klassen bereitstellt. Mit org.reflections können Sie eine Reihe von Klassen erhalten, die eine bestimmte Basisklasse erweitern:

Reflections reflections = new Reflections("com.mycompany");
Set<Class<? extends MyInterface>> classes = reflections.getSubTypesOf(MyInterface.class);
Nach dem Login kopieren

Dieser Code durchsucht das Paket „com.mycompany“ rekursiv und sucht nach Klassen, die die Schnittstelle „MyInterface“ implementieren . Anschließend können Sie den resultierenden Klassensatz durchlaufen und nach Bedarf Objekte instanziieren.

Eine weitere bemerkenswerte Bibliothek für diesen Zweck ist ClassGraph. Es verwendet einen anderen Ansatz zum Erkennen von Klassen und stellt eine umfassende API zum Abfragen und Überprüfen des Klassenpfads bereit. Mit ClassGraph können Sie eine Liste von Klassen erhalten, die eine Basisklasse erweitern, indem Sie den folgenden Code verwenden:

ClassGraph classGraph = new ClassGraph();
ClassInfoList classInfos = classGraph.getSubclasses(BaseClass.class);
Nach dem Login kopieren

ClassGraph scannt den Klassenpfad gründlich, einschließlich JAR-Dateien und Klassenlader. Es bietet zusätzliche Funktionen wie das Filtern nach Annotation oder Methodenpräsenz.

Diese Bibliotheken bieten eine praktische Möglichkeit, untergeordnete Klassen zur Laufzeit dynamisch zu laden und zu instanziieren. Indem Sie die Hardcodierung einer Klassenliste vermeiden, können Sie problemlos Funktionen hinzufügen oder entfernen, ohne die Basisklasse oder den Anwendungscode zu ändern.

Das obige ist der detaillierte Inhalt vonWie kann ich zur Laufzeit in Java alle Unterklassen einer Basisklasse finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage