Rumah > Java > javaTutorial > Mengapakah Java Generics Kovarian?

Mengapakah Java Generics Kovarian?

Linda Hamilton
Lepaskan: 2024-11-21 04:19:10
asal
921 orang telah melayarinya

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));
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan