Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Cari Kelas Runtime Memperluaskan Kelas Asas Tertentu di Java?

Bagaimanakah Saya Boleh Cari Kelas Runtime Memperluaskan Kelas Asas Tertentu di Java?

Susan Sarandon
Lepaskan: 2024-11-26 08:37:12
asal
579 orang telah melayarinya

How Can I Find Runtime Classes Extending a Specific Base Class in Java?

Mencari Kelas Runtime yang Mewarisi daripada Kelas Asas dalam Java

Di Java, mengesan kelas dalam aplikasi yang sedang berjalan yang melanjutkan kelas asas yang ditentukan telah menjadi cabaran yang lama. Secara tradisinya, pembangun mengekalkan senarai kelas yang perlu dibuat seketika, yang berkemungkinan memerlukan kemas kini apabila kelas baharu ditambah atau dialih keluar.

Walau bagaimanapun, kemajuan terkini dalam Java menjadikan tugas ini lebih mudah. Pustaka org.reflections menyediakan mekanisme yang mudah untuk introspeksi dan mendapatkan semula kelas berdasarkan perhubungan warisan. Begini cara ia berfungsi:

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

Dalam contoh ini, tika Reflections dikonfigurasikan untuk memeriksa pakej bermula dengan "com.mycompany." Kaedah getSubTypesOf mengembalikan Set semua kelas yang memanjangkan antara muka MyInterface.

Contoh lain menunjukkan cara mencari dan membuat instantiate kelas konkrit:

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

Dalam kod ini, perpustakaan digunakan untuk cari subkelas java.util.List. Gelung berulang ke atas kelas, mencetak nama mereka dan untuk kelas ArrayList, mencipta tika dan mengesahkan saiznya selepas menambah elemen.

Sebelum ini, fungsi ini tidak disokong secara asli di Java. Walau bagaimanapun, dengan kemunculan pustaka refleksi seperti org.reflections, pembangun kini boleh menemui dan membuat instantiat kelas secara dinamik berdasarkan perhubungan warisan, membolehkan asas kod yang lebih fleksibel dan boleh diperluaskan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cari Kelas Runtime Memperluaskan Kelas Asas Tertentu di Java?. 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