Rumah > Java > javaTutorial > teks badan

Bolehkah Kami Mencipta Tatasusunan Generik dalam Java yang Dapat Setanding?

Susan Sarandon
Lepaskan: 2024-10-28 12:40:02
asal
604 orang telah melayarinya

 Can We Create Generic Arrays in Java That Extend Comparable?

Tasusunan Generik dalam Java: Meneroka Kovarian dan Pemadaman Jenis

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:

  • Tatasusunan: Kovarian, bermakna jenis elemennya mengekalkannya taip maklumat semasa masa jalan.
  • Generik: Gunakan pemadaman jenis, di mana maklumat jenis dialih keluar semasa masa jalan.

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

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:

  • Jenis Kebimbangan Keselamatan : Menghantar tatasusunan Objek kepada tatasusunan generik boleh membawa kepada isu keselamatan jenis kerana tatasusunan adalah kovarian dan generik menggunakan pemadaman jenis.
  • Kemudahalihan dan Kebolehselenggaraan: Mesin Maya Java yang berbeza (JVMs ) mungkin mengendalikan pemadaman jenis secara berbeza, menjadikan tingkah laku kurang mudah alih dan lebih sukar untuk dikekalkan.

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!