Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Mendapatkan Senarai Lengkap Pelaksanaan Antara Muka secara Pemrograman di Java?

Bagaimanakah Saya Boleh Mendapatkan Senarai Lengkap Pelaksanaan Antara Muka secara Pemrograman di Java?

Mary-Kate Olsen
Lepaskan: 2024-12-07 07:17:12
asal
851 orang telah melayarinya

How Can I Programmatically Get a Complete List of Interface Implementations in Java?

Mendapatkan Senarai Komprehensif Pelaksanaan Antara Muka melalui Pengaturcaraan dalam Java

Di Java, anda mungkin sering menghadapi keperluan untuk mendapatkan semula koleksi kelas yang melaksanakan antara muka tertentu. Ini boleh dicapai melalui pelbagai pendekatan, sebahagian daripadanya melibatkan penggunaan refleksi atau teknik khusus lain.

Menggunakan Perpustakaan Refleksi: Refleksi

Perpustakaan Reflections menyediakan cara yang mudah untuk memeriksa metadata dan perhubungan kelas. Dengan menggunakan contoh Reflections, anda boleh mendapatkan satu set kelas yang memanjangkan antara muka yang diingini, seperti yang ditunjukkan dalam contoh berikut:

Reflections reflections = new Reflections("firstdeveloper.examples.reflections");
Set<Class<? extends Pet>> classes = reflections.getSubTypesOf(Pet.class);
Salin selepas log masuk

Menggunakan ServiceLoader

ServiceLoader menawarkan mekanisme untuk mencari dan memuatkan pelaksanaan pembekal perkhidmatan pada masa jalan. Untuk memanfaatkan teknik ini untuk mendapatkan semula pelaksanaan antara muka, anda mentakrifkan ServiceProviderInterface (SPI) dan mengisytiharkan pelaksanaannya. Kod berikut menggambarkan pendekatan:

ServiceLoader<Pet> loader = ServiceLoader.load(Pet.class);
for (Pet implClass : loader) {
    System.out.println(implClass.getClass().getSimpleName()); // prints Dog, Cat
}
Salin selepas log masuk

Memanfaatkan Anotasi Tahap Pakej

Alternatif lain melibatkan penggunaan anotasi peringkat pakej. Pendekatan ini memerlukan penciptaan anotasi tersuai yang menentukan pelaksanaan antara muka. Contoh kod berikut menunjukkan cara untuk mentakrifkan anotasi:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PACKAGE)
public @interface MyPackageAnnotation {
    Class<?>[] implementationsOfPet() default {};
}
Salin selepas log masuk

Untuk mengisytiharkan anotasi dalam pakej, cipta fail bernama package-info.java dan sertakan kandungan berikut:

@MyPackageAnnotation(implementationsOfPet = {Dog.class, Cat.class})
package examples.reflections;
Salin selepas log masuk

Kemudian, anda boleh mendapatkan semula pelaksanaan antara muka menggunakan kod berikut:

Package[] packages = Package.getPackages();
for (Package p : packages) {
    MyPackageAnnotation annotation = p.getAnnotation(MyPackageAnnotation.class);
    if (annotation != null) {
        Class<?>[] implementations = annotation.implementationsOfPet();
        for (Class<?> impl : implementations) {
            System.out.println(impl.getSimpleName());
        }
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Senarai Lengkap Pelaksanaan Antara Muka secara Pemrograman 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