Java Generik: Membongkar Enigma Kata Kunci 'Super'
Walaupun meneroka pelbagai sumber mengenai generik, anda masih menghadapi kekeliruan mengenai ' kata kunci super'. Mari kita mendalami selok-belok menggunakan 'super' dalam generik Java untuk menjelaskan keraguan ini.
1. Membongkar Percanggahan dengan '? super Number'
Apabila mengisytiharkan koleksi sebagai 'Senarai super Number>', anda mungkin menganggap bahawa ia boleh memuatkan objek yang merupakan ibu bapa kepada Number. Walau bagaimanapun, perkara sebaliknya berlaku: anda boleh menambah Integer tetapi bukan Objek.
Puncanya terletak pada penukaran tangkapan. 'Senaraikan Nombor super>' boleh menangkap hanya jenis yang boleh memanjangkan Nombor dan superjenisnya. Memandangkan Object ialah superclass bagi Nombor, tetapi bukan sambungan, ia tidak boleh ditangkap. Walau bagaimanapun, Integer ialah subjenis Nombor, jadi ia boleh ditambah.
2. Mentafsir Gelagat dengan 'Senarai
Menyusun 'test(sList);' gagal kerana 'Senaraikan
Ringkasnya, '? super T' menandakan bahawa koleksi boleh menyimpan objek jenis T atau mana-mana kelas supernya yang serasi sambungan. Walau bagaimanapun, ini tidak termasuk semua superjenis, hanya yang memanjangkan jenis yang ditentukan.
3. Mengapa '' adalah Dilarang
Java tidak membenarkan '' kerana ia membawa kepada situasi yang tidak jelas. Contohnya, 'Senaraikan' mungkin menangkap kedua-dua 'Senarai
Atas ialah kandungan terperinci Java Generics: What\'s the Deal with the `? super` Kata kunci?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!