Rumah > Java > javaTutorial > teks badan

Mengapa Saya Tidak Boleh Mencipta Tatasusunan Generik di Jawa?

Barbara Streisand
Lepaskan: 2024-10-30 23:14:29
asal
131 orang telah melayarinya

Why Can't I Create an Array of Generics in Java?

Array Generik dalam Java

Di Java, generik dan tatasusunan tidak wujud bersama secara langsung. Apabila cuba mencipta tatasusunan generik yang memanjangkan jenis yang setanding, ralat mungkin timbul. Sebab asas untuk ini ialah generik Java dipadamkan semasa penyusunan.

Pertimbangkan kod berikut:

<code class="java">public class Hash<T extends Comparable<String>> {
    private T[] hashTable;
    private int tableSize;

    Hash(int records, double load) {
        tableSize = (int)(records / loadFactor);
        tableSize = findNextPrime(tableSize);
        hashTable = (T[])(new Object[tableSize]);  // Error: Object cannot be cast to Comparable
    }
}</code>
Salin selepas log masuk

Pemadaman jenis Java menganggap tatasusunan sebagai kovarian, bermakna ia mengekalkan jenis elemennya pada masa larian. Oleh itu, tatasusunan jenis generik bukanlah jenis yang sama seperti tatasusunan jenis sebandingnya, dan tatasusunan jenis generik tidak boleh dihantar ke tatasusunan jenis generik.

Untuk memintas isu ini, satu penyelesaian ialah menggunakan Array.newInstance ():

<code class="java">private Comparable[] hashtable;

...

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

Walau bagaimanapun, pendekatan ini mempunyai had. Kod warisan, pustaka luaran atau kebolehoperasian dengan bahasa lain mungkin memerlukan tatasusunan generik yang benar.

Akhirnya, biasanya disyorkan untuk mengelak daripada menggunakan tatasusunan dengan generik dalam Java. Sebaliknya, pertimbangkan untuk menggunakan kelas koleksi seperti ArrayList atau HashMap, yang memberikan lebih fleksibiliti dan keselamatan jenis.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mencipta Tatasusunan Generik 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!