Apabila kita menggunakan kad bebas terikat dengan super, ini bermakna parameter jenis boleh jenis yang ditentukan atau mana-mana kelas supernya. Contohnya, Senarai super Number> menunjukkan bahawa senarai itu boleh menyimpan objek jenis Nombor atau mana-mana kelas induknya.
Dalam contoh pertama anda, senarai senarai diisytiharkan sebagai Senaraikan super Number> tidak boleh mengambil Objek kerana Objek bukan subkelas Nombor. Sebaliknya, Integer ialah subkelas Nombor, jadi ia boleh ditambah pada senarai.
Dalam contoh kedua anda, anda cuba melepasi Senarai< String> kepada kaedah yang mengharapkan Senarai Nombor super>. Ralat kompilasi ini berlaku kerana String bukan subkelas Nombor. Logik yang anda kemukakan tidak betul: Objek bukan superclass Nombor dan String bukan subkelas Nombor.
Tidak seperti kad bebas sempadan bawah, kad bebas sempadan atas tidak boleh digunakan sebagai pengeluar. Ini bermakna anda tidak boleh mendapatkan elemen individu daripada Senarai Nombor super>. Sekatan ini wujud untuk mengelakkan pelanggaran keselamatan jenis.
Kad bebas sempadan dengan super membolehkan kami mencipta koleksi yang boleh menggunakan objek berbilang jenis yang diwarisi daripada superclass biasa . Walau bagaimanapun, kita harus berhati-hati apabila menambah elemen pada koleksi ini, kerana kita tidak boleh menambah objek yang bukan subkelas superclass yang ditetapkan.
Atas ialah kandungan terperinci Bagaimana Java Generics\' `? Super` Wildcards Berfungsi dan Apakah Hadnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!