Kovarian Tatasusunan vs. Invarian Generik
Tatasusunan dan generik dalam Java mempamerkan gelagat kovarian yang berbeza, menimbulkan persoalan tentang keputusan reka bentuk mereka. Walaupun tatasusunan ialah kovarian, generik adalah invarian, bermakna perhubungan subjenis tidak digunakan pada parameter jenisnya.
Kovarian Tatasusunan
Dalam Java, tatasusunan ialah kovarian. Jika X ialah subjenis Y, maka X[] juga akan menjadi subjenis Y[]. Kovarians ini membenarkan operasi polimorfik pada tatasusunan pelbagai jenis. Contohnya, kaedah yang mengambil Object[] boleh menerima String[] tanpa masalah.
Gelagat kovarian dalam tatasusunan ini berpunca daripada sifat asasnya. Menyimpan nilai jenis tertentu dalam tatasusunan tidak mengubah jenis intrinsik tatasusunan itu sendiri. Oleh itu, tatasusunan boleh menyimpan elemen subjenis yang berbeza-beza.
Invarian Generik
Tidak seperti tatasusunan, generik dalam Java adalah invarian. A Senarai
Jika generik ialah kovarian, menambah unsur jenis Y pada Senarai
Sebab Kovarian Tatasusunan dan Invarian Generik
Keputusan untuk menjadikan tatasusunan kovarian didorong oleh keperluan untuk operasi tatasusunan polimorfik. Tanpa kovarians, atur cara yang berguna akan dihadkan untuk beroperasi pada tatasusunan jenis tertentu yang tidak berubah.
Sebaliknya, invarian perlindungan generik melindungi keselamatan jenis dengan memastikan bahawa operasi pada jenis generik menghormati parameter jenis yang ditentukan. Ini menghalang penetapan jenis yang tidak serasi secara tidak sengaja, mengekalkan kebolehpercayaan dan kebolehramalan kod generik.
Atas ialah kandungan terperinci Mengapakah Java Arrays Kovarian manakala Generik adalah Invarian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!