Pengenalan:
Memahami kata kunci 'super' dalam generik Java boleh menjadi tugas yang membingungkan. Artikel ini bertujuan untuk menjelaskan konsep ini dengan meneroka nuansanya melalui contoh khusus dan menangani salah tanggapan biasa.
Generik Terbatas dengan Kata Kunci 'Super':
Kad bebas terikat Senaraikan super Number> membolehkan untuk menangkap Nombor dan superjenisnya. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa ini tidak bermakna anda boleh menambah sebarang superjenis Nombor pada senarai ini.
Gelagat Tidak Dijangka Objek lwn. Integer:
Dalam contoh, anda sebutkan, Integer(0) boleh ditambah ke Senarai super Number>, manakala Object() tidak boleh. Tingkah laku ini timbul daripada peraturan penukaran tangkapan untuk kad bebas sempadan. Senaraikan super Number> hanya boleh menangkap Nombor, Objek dan Boleh Bersiri, yang mana Nombor adalah superjenis terendah.
Mengapa Menambah Rentetan pada Senarai super Number> Tidak Menyusun:
Walaupun String memanjangkan Objek, kelas super Nombor, menambah String pada Senarai super Number> gagal untuk menyusun. Ini kerana kad bebas sempadan mengikut garis panduan lanjutan pengeluar, super pengguna (PECS). Senaraikan super Number> ialah pengguna Nombor, jadi jenis hujahnya tidak boleh menjadi pengeluar String.
Mengapa Dibenarkan dalam Java Generics?
Ketiadaan binaan dalam generik Java berpunca daripada fakta bahawa mereka tidak masuk akal. Jika jenis generik boleh menerima mana-mana superjenis terikatnya, tidak ada keperluan untuk parameter jenis tertentu.
Kesimpulan:
Memahami kata kunci 'super' dalam generik Java memerlukan pertimbangan yang teliti terhadap implikasinya dan pematuhannya kepada garis panduan PECS. Dengan memahami konsep ini, anda boleh menggunakan kad bebas sempadan dengan berkesan untuk meningkatkan fleksibiliti API anda.
Atas ialah kandungan terperinci Java Generics: Bagaimanakah Kata Kunci `super` Benar-benar Berfungsi dengan Kad Liar Terhad?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!