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

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

Barbara Streisand
Freigeben: 2024-11-26 03:50:11
Original
167 Leute haben es durchsucht

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

Unterklassen in Java-Anwendungen dynamisch identifizieren

Java-Programme verwenden .class-Dateien, die lose zusammengeschlossen sind. Dies macht es schwierig, alle Unterklassen, die eine Basisklasse erweitern, zur Laufzeit dynamisch zu identifizieren. Es gibt jedoch einen Mechanismus, um diese Einschränkung zu mildern.

org.reflections-Bibliothek

Die org.reflections-Bibliothek bietet eine leistungsstarke Lösung zum Erkennen von Unterklassen zur Laufzeit. Es nutzt Anmerkungen und Reflexion, um Klassen und ihre Beziehungen zu untersuchen. Der folgende Codeausschnitt demonstriert seine Verwendung:

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

wobei „com.mycompany“ das Paket ist, das nach Klassen durchsucht werden soll. Dieser Code erfasst alle Untertypen von MyInterface innerhalb des angegebenen Pakets.

Beispielverwendung

Betrachten Sie beispielsweise den folgenden Code:

public static void main(String[] args) throws IllegalAccessException, InstantiationException {
    Reflections reflections = new Reflections("java.util");
    Set<Class<? extends List>> classes = reflections.getSubTypesOf(java.util.List.class);
    for (Class<? extends List> aClass : classes) {
        System.out.println(aClass.getName());
        if(aClass == ArrayList.class) {
            List list = aClass.newInstance();
            list.add("test");
            System.out.println(list.getClass().getName() + ": " + list.size());
        }
    }
}
Nach dem Login kopieren

Dies Der Code durchläuft alle Subtypen von List im Paket java.util. Insbesondere identifiziert es ArrayList und demonstriert die Fähigkeit, eine Instanz mit Reflektion zu erstellen. Die Ausgabe enthält Folgendes:

java.util.LinkedList
java.util.AbstractSequentialList
java.util.Vector
java.util.ArrayList: 1
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich zur Laufzeit alle Unterklassen einer Basisklasse in Java dynamisch 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