Rumah >Java >javaTutorial >Bolehkah Kami Mencipta Tatasusunan Generik dalam Java yang Dapat Setanding?
Pengenalan
Tatasusunan generik, di mana elemen tatasusunan berkongsi parameter jenis biasa, memberikan cabaran unik dalam Java kerana interaksi antara generik dan tingkah laku kovarian tatasusunan.
Soalan
Bolehkah kita mencipta tatasusunan generik di mana jenis generik memanjang Setanding? Percubaan untuk menghantar tatasusunan Objek kepada tatasusunan generik yang memanjangkan isu muka Setanding, menimbulkan soalan berikut: Adakah terdapat penyelesaian?
Jawapan
Generik dan Tatasusunan: Teka-teki Keserasian
Generik dan tatasusunan mempunyai cara pengendalian jenis yang berbeza secara asasnya:
Disebabkan ketidakpadanan ini, mewujudkan tatasusunan generik jenis yang memanjangkan kelas tertentu tidak mungkin.
Array.newInstance(): Penyelesaian
Satu penyelesaian yang berpotensi ialah menggunakan kaedah Array.newInstance():
<code class="java">private Comparable[] hashtable; ... hashtable = (Comparable[])Array.newInstance(Comparable.class, tableSize);</code>
Pendekatan ini membolehkan anda mencipta tatasusunan superjenis jenis generik (Setanding dalam kes ini), tetapi penting untuk ambil perhatian bahawa tatasusunan ini bukan daripada jenis generik yang dikehendaki.
Mengapa Tidak Menggunakan Tatasusunan dengan Generik?
Walaupun terdapat penyelesaian, menggunakan tatasusunan dengan generik biasanya tidak digalakkan kerana:
Alternatif: ArrayList
Pilihan yang lebih sesuai ialah menggunakan ArrayList , yang menyediakan cara yang cekap dan selamat jenis untuk mengurus koleksi objek generik. ArrayLists menawarkan fleksibiliti generik dan mengelakkan kemungkinan perangkap yang dikaitkan dengan tatasusunan dan generik.
Atas ialah kandungan terperinci Bolehkah Kami Mencipta Tatasusunan Generik dalam Java yang Dapat Setanding?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!