Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Menggabungkan Kelas dan Kekangan Antara Muka Menggunakan Generik Java?

Bagaimanakah Saya Boleh Menggabungkan Kelas dan Kekangan Antara Muka Menggunakan Generik Java?

DDD
Lepaskan: 2024-12-05 08:40:12
asal
965 orang telah melayarinya

How Can I Combine Class and Interface Constraints Using Java Generics?

Java Generik dengan Kelas dan Keserasian Antara Muka

Di Java, mencipta objek kelas dengan kekangan tertentu boleh menjadi mencabar. Senario biasa ialah mentakrifkan objek kelas yang memanjangkan kelas tertentu sambil melaksanakan antara muka tertentu secara serentak. Walau bagaimanapun, mencapai kedua-dua kekangan secara serentak menggunakan generik telah menjadi titik perbalahan yang biasa.

Percubaan untuk memaksa kelas melanjutkan KelasA dan melaksanakan antara muka AntaramukaB menggunakan sintaks:

Class<? extends ClassA>
Salin selepas log masuk

atau

Class<? extends InterfaceB>
Salin selepas log masuk

hanya akan memenuhi satu keperluan dan gagal untuk digabungkan kedua-duanya.

Penyelesaian

Mujurlah, generik Java membenarkan berbilang antara muka atau antara muka kelas tambah. Untuk mencapai matlamat ini, ubah suai pengisytiharan kad bebas seperti berikut:

<T extends ClassA & InterfaceB>
Salin selepas log masuk

Seperti yang digambarkan dalam Tutorial Generik oleh Sun, dengan menambahkan & Nama Antaramuka untuk setiap antara muka tambahan yang diperlukan, gabungan kompleks yang sewenang-wenangnya boleh dicapai. Contohnya, pengisytiharan JavaDoc Collections#max menunjukkan kerumitan ini:

public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
Salin selepas log masuk

Memelihara keserasian binari memerlukan pengisytiharan rumit ini.

Pelaksanaan dengan Kelas dan Kekangan Antara Muka

Untuk melaksanakan sekatan yang diingini dalam pembolehubah pengisytiharan, letakkan sempadan generik pada kelas:

class classB { }
interface interfaceC { }

public class MyClass<T extends classB & interfaceC> {
    Class<T> variable;
}
Salin selepas log masuk

Kesimpulan

Generik Java menyediakan cara yang fleksibel untuk mencipta gabungan kelas dan antara muka yang terhad. Dengan memahami sintaks dan pengehadan, pembangun boleh memanfaatkan kuasa ini untuk menguatkuasakan keperluan khusus dalam kod mereka.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Kelas dan Kekangan Antara Muka Menggunakan Generik 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan