Rumah >Java >javaTutorial >Mengapakah Saya Tidak Boleh Mencipta Tatasusunan Senarai Terpaut di Java?

Mengapakah Saya Tidak Boleh Mencipta Tatasusunan Senarai Terpaut di Java?

Susan Sarandon
Susan Sarandonasal
2024-10-27 01:42:03981semak imbas

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

Tidak Dapat Membuat Instantiate LinkedList Array di Java

Dalam urutan ini, pembangun menghadapi cabaran semasa cuba mencipta tatasusunan LinkedList di Java untuk menyimpan nilai dalam matriks jarang. Mesej ralat "Tidak boleh mencipta tatasusunan generik LinkedList" menggesa dua soalan penting:

  1. Apakah punca ralat ini?

    Punca utama terletak pada sekatan Java terhadap mencipta tatasusunan generik bagi jenis bukan primitif. Generik ialah mekanisme selamat jenis yang diperkenalkan dalam Java 5 untuk menghalang ClassCastException masa jalan. Apabila mengisytiharkan tatasusunan jenis generik, seperti LinkedList, pengkompil memerlukan penukaran jenis eksplisit untuk menyedarkan Java tentang jenis tatasusunan tertentu yang dibuat.

  2. Mengapa adakah jenis boleh diterima dalam pengisytiharan tatasusunan tetapi tidak dalam penciptaan?

    Pengisytiharan tatasusunan menggunakan jenis mentah, LinkedList[], yang tidak menyatakan parameter jenis generik. Jenis mentah tidak ditaip dan tidak menguatkuasakan keselamatan jenis. Walau bagaimanapun, apabila membuat instantiate tatasusunan, pengkompil memerlukan parameter jenis tertentu untuk disediakan, di mana ralat berlaku.

Penyelesaian:

Untuk menyelesaikan isu ini, satu cast jenis mesti dilakukan. Kod yang diperbetulkan sepatutnya kelihatan seperti ini:

myMatrix = (LinkedList<IntegerNode>[]) new LinkedList<?>[numRows];

Pelakon (LinkedList[]) secara eksplisit memberitahu pengkompil bahawa tatasusunan yang dibuat ialah tatasusunan LinkedList yang mengandungi elemen IntegerNode. Ini membolehkan tatasusunan generik dibuat instantiated dengan betul.

Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Mencipta Tatasusunan Senarai Terpaut di Java?. 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