Rumah > Java > javaTutorial > teks badan

Bolehkah saya Mencipta Tatasusunan Jenis Parameter di Jawa?

Mary-Kate Olsen
Lepaskan: 2024-10-30 02:17:28
asal
817 orang telah melayarinya

 Can I Create an Array of a Parameterized Type in Java?

Tatasusunan Generik dalam Java: Penyelaman Komprehensif

Tatasusunan dan generik Java mungkin kelihatan tidak serasi pada pandangan pertama. Walaupun generik membenarkan keselamatan dan fleksibiliti jenis, tatasusunan dalam Java sememangnya kovarian, bermakna ia mengekalkan jenis elemen yang tepat pada masa jalan. Ini menimbulkan cabaran apabila cuba mencipta tatasusunan jenis generik.

Pertimbangkan coretan kod berikut:

<code class="java">public class Hash<T extends Comparable<String>> {
    private T[] hashTable;
    // ...
}</code>
Salin selepas log masuk

Kod ini cuba mencipta tatasusunan objek generik yang memanjangkan Setanding. Walau bagaimanapun, Java tidak membenarkan menghantar tatasusunan Objek kepada tatasusunan jenis parameter, seperti yang dilihat dalam mesej ralat yang muncul semasa penyusunan:

java.lang.Object; cannot be cast to [Ljava.lang.Comparable;
Salin selepas log masuk

Untuk menyelesaikan masalah ini, seseorang boleh menggunakan Tatasusunan. kaedah newInstance():

<code class="java">private Comparable[] hashtable;
// ...
hashtable = (Comparable[])Array.newInstance(Comparable.class, tableSize);</code>
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini masih tidak mencipta tatasusunan jenis parameter. Tatasusunan dalam Java adalah selamat jenis pada masa jalan, jadi ia tidak boleh dihantar ke jenis lain sesuka hati.

Generik dalam Java mengalami pemadaman jenis, di mana parameter jenis dialih keluar semasa penyusunan. Ini memastikan tatasusunan mengekalkan jenis elemen khusus mereka, menghalang penghantaran yang tidak diingini. Akibatnya, adalah tidak mungkin untuk mencipta tatasusunan jenis parameter tertentu.

Dalam kes tertentu ini, adalah disyorkan untuk menggunakan ArrayList dan bukannya tatasusunan. ArrayLists menawarkan saiz dinamik, sokongan generik dan lebih sesuai untuk kebanyakan senario.

Untuk penjelasan terperinci tentang isu ini, rujuk Soalan Lazim Java Generics: https://docs.oracle.com/javase/7 /docs/technotes/guides/generics/faq.html#CanIcreatenarraywhosecomponenttypeisaconcreteparameterizedtype

Atas ialah kandungan terperinci Bolehkah saya Mencipta Tatasusunan Jenis Parameter di Jawa?. 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!