Rumah >Java >javaTutorial >Mengapakah Java Generics Kovarian?
Java Generics Covariance
Di Jawa, generik bukan kovarian, seperti yang dijelaskan dalam artikel yang disediakan. Ini bermakna jika kelas memanjangkan kelas generik, jenis generik kelas anak tidak boleh menjadi subjenis jenis generik kelas induk.
Memahami Konsep "Alias"
Pengarang menyebut bahawa "jika ln dialiaskan dengan li," ia akan melanggar janji keselamatan jenis. Alias merujuk kepada nama alternatif atau rujukan kepada objek. Dalam senario ini, li ialah alias ln.
Contoh Ilustrasi
Pertimbangkan kod berikut:
List<Integer> li = new ArrayList<Integer>(); List<Number> ln = li; // illegal ln.add(new Float(3.1415));
Walaupun Integer mewarisi daripada Nombor, menambah objek Terapung pada ln adalah menyalahi undang-undang. Ini kerana, dengan menamakan li kepada ln, kita pada asasnya mengatakan bahawa li boleh memegang Nombor. Walau bagaimanapun, li pada asalnya diisytiharkan untuk memegang Integer sahaja. Oleh itu, menambah Float ke ln melanggar jaminan keselamatan jenis li.
Kesimpulan
Contoh ini menunjukkan bahawa generik bukan kovarian dalam Java. Percubaan untuk menetapkan jenis generik subkelas kepada jenis generik superclass akan mengakibatkan ralat masa kompilasi.
Atas ialah kandungan terperinci Mengapakah Java Generics Kovarian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!