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);
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()); } }
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!