Kad bebas dan Kebolehubahan dalam Koleksi Java
Apabila bekerja dengan koleksi Java, adalah penting untuk memahami cara kad bebas mempengaruhi gelagat koleksi. Pertimbangkan kod berikut:
List<? extends Parent> list = ...; Parent p = factory.get(); // returns concrete implementation list.set(0, p); // fails: set(int, ? extends Parent) cannot be applied to (int, Parent)
Kod ini gagal disusun disebabkan oleh sekatan yang berkaitan dengan kad bebas dan kebolehubah.
Mengapa Sekatan?
Sintaks kad bebas, extends Parent>, menunjukkan bahawa koleksi mengandungi beberapa subjenis Induk. Walau bagaimanapun, sekatan ini menghalang penambahan objek Induk pada koleksi kerana subjenis tertentu mungkin tidak membenarkannya.
Sebagai contoh, jika senarai sebenarnya Senarai
Untuk mengekalkan keselamatan jenis, Java mengehadkan penambahan elemen pada koleksi kad bebas. Sekatan ini memastikan koleksi kekal konsisten dan menghalang tingkah laku yang tidak dijangka.
Kesimpulan
Apabila menggunakan kad bebas, adalah penting untuk mempertimbangkan potensi implikasi untuk kebolehubah. Walaupun kad bebas memberikan fleksibiliti semasa bekerja dengan koleksi, ia juga memperkenalkan kekangan tertentu untuk memastikan integriti koleksi dan kandungannya.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menambah Elemen pada `Senarai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!