Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Cari Secara Dinamik Semua Subkelas Kelas Asas dalam Java pada Runtime?

Bagaimanakah Saya Boleh Cari Secara Dinamik Semua Subkelas Kelas Asas dalam Java pada Runtime?

Barbara Streisand
Lepaskan: 2024-11-26 03:50:11
asal
167 orang telah melayarinya

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

Mengenalpasti Subkelas Secara Dinamik dalam Aplikasi Java

Aturcara Java menggunakan fail .class yang digabungkan secara longgar. Ini menjadikannya mencabar untuk mengenal pasti secara dinamik semua subkelas yang memanjangkan kelas asas semasa runtime. Walau bagaimanapun, terdapat mekanisme yang tersedia untuk mengurangkan pengehadan ini.

Perpustakaan org.reflections

Pustaka org.reflections menawarkan penyelesaian yang berkuasa untuk menemui subkelas pada masa jalan. Ia menggunakan anotasi dan refleksi untuk introspeksi kelas dan hubungannya. Coretan kod berikut menunjukkan penggunaannya:

Reflections reflections = new Reflections("com.mycompany");
Set<Class<? extends MyInterface>> classes = reflections.getSubTypesOf(MyInterface.class);
Salin selepas log masuk

di mana "com.mycompany" ialah pakej untuk mengimbas kelas. Kod ini menangkap semua subjenis MyInterface dalam pakej yang ditentukan.

Contoh Penggunaan

Sebagai contoh, pertimbangkan kod berikut:

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());
        }
    }
}
Salin selepas log masuk

Ini kod berulang melalui semua subjenis Senarai dalam pakej java.util. Secara khusus, ia mengenal pasti ArrayList dan menunjukkan keupayaan untuk mencipta contoh dengan refleksi. Output akan termasuk yang berikut:

java.util.LinkedList
java.util.AbstractSequentialList
java.util.Vector
java.util.ArrayList: 1
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cari Secara Dinamik Semua Subkelas Kelas Asas dalam Java pada Runtime?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan