Rumah > Java > javaTutorial > Mengapa Saya Tidak Boleh Menambah Elemen pada `Senarai

Mengapa Saya Tidak Boleh Menambah Elemen pada `Senarai

Mary-Kate Olsen
Lepaskan: 2024-12-13 16:48:11
asal
821 orang telah melayarinya

Why Can't I Add Elements to a `List

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

Kod ini gagal disusun disebabkan oleh sekatan yang berkaitan dengan kad bebas dan kebolehubah.

Mengapa Sekatan?

Sintaks kad bebas, , 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, menambah objek Induk akan melanggar keselamatan jenis koleksi itu. Ini kerana Child ialah subjenis Induk dan objek Induk mungkin tidak serasi dengan operasi yang dibenarkan pada Child.

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!

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