Rumah >Java >javaTutorial >Mengapakah Kaedah `remove()` Collections Java Bukan Generik?

Mengapakah Kaedah `remove()` Collections Java Bukan Generik?

Susan Sarandon
Susan Sarandonasal
2024-12-11 09:22:10565semak imbas

Why Aren't Java Collections' `remove()` Methods Generic?

Mengapakah Kaedah Alih Keluar Java Collections Bukan Generik?

Rangka kerja Java Collections menyediakan kaedah remove() untuk kedua-dua koleksi dan peta. Walau bagaimanapun, kaedah ini bukan generik, bermakna ia menerima Objek sebagai hujah dan bukannya parameter jenis E. Keputusan ini telah menimbulkan persoalan tentang potensi faedah membuat remove() generik.

Satu hujah untuk membuat remove() generik ialah ia boleh menghalang ralat masa kompilasi apabila cuba mengalih keluar jenis yang tidak serasi daripada koleksi secara tidak sengaja . Contohnya, jika Koleksi lulus Set secara tidak sengaja, ia akan mengakibatkan ralat masa kompilasi dan bukannya isu penyahpepijatan kemudian hari.

Walau bagaimanapun, sebab mengapa remove() tidak generik adalah terutamanya kerana ia membenarkan penyingkiran objek berdasarkan kesaksamaan dan bukannya pemeriksaan jenis yang ketat. Mengikut spesifikasi kaedah remove(), elemen yang hendak dialih keluar dikenal pasti sebagai objek e supaya (o==null ? e==null : o.equals(e)) adalah benar. Ini membolehkan fleksibiliti dalam penyingkiran elemen, kerana objek yang dialih keluar tidak perlu jenis yang sama seperti objek yang dihantar kepada kaedah remove().

Sebagai contoh, adalah mungkin untuk mempunyai Map. Apabila memanggil remove() dengan LinkedList sebagai hujah, ia harus mengalih keluar kunci yang merupakan senarai dengan kandungan yang sama, walaupun ia adalah pelaksanaan List yang berbeza. Ini tidak akan berlaku jika remove() adalah generik dan terhad kepada satu jenis parameter.

Atas ialah kandungan terperinci Mengapakah Kaedah `remove()` Collections Java Bukan Generik?. 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