Rumah >Java >javaTutorial >Mengapakah Java Generics Kovarian?

Mengapakah Java Generics Kovarian?

Linda Hamilton
Linda Hamiltonasal
2024-11-21 04:19:10917semak imbas

Why Aren't Java Generics Covariant?

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!

Kenyataan:
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