Rumah  >  Artikel  >  Java  >  Mengapa Menghantar Tatasusunan Objek kepada Tatasusunan Integer Menghasilkan ClassCastException?

Mengapa Menghantar Tatasusunan Objek kepada Tatasusunan Integer Menghasilkan ClassCastException?

Patricia Arquette
Patricia Arquetteasal
2024-10-27 13:03:01970semak imbas

Why Does Casting an Object Array to an Integer Array Result in a ClassCastException?

Mengapa Hantaran daripada Tatasusunan Objek kepada Tatasusunan Integer Menimbulkan ClassCastException

Coretan kod berikut menghadapi ralat:

Object[] a = new Object[1];
Integer b=1;
a[0]=b;
Integer[] c = (Integer[]) a;

Ralat, "java.lang.ClassCastException: [Ljava.lang.Object; tidak boleh dihantar ke [Ljava.lang.Integer;", berlaku dalam baris terakhir.

Sebab:
Masalah timbul kerana anda tidak boleh merawat tatasusunan integer sebagai tatasusunan objek. Walaupun Integer[] ialah subjenis Objek[], Object[] bukan subjenis Integer[].

Oleh itu, percubaan untuk menghantar Objek[] kepada Integer[] menghasilkan ClassCastException.

Kod Alternatif:
Untuk menangani isu ini, gunakan salah satu kaedah berikut:

Integer[] integerArray = Arrays.copyOf(a, a.length, Integer[].class);
Integer[] integerArray = Arrays.copyOfRange(a, 0, a.length, Integer[].class);

Sebagai alternatif, anda boleh menghalang ClassCastException dengan memastikan tatasusunan elemen adalah semua jenis Integer, seperti dalam kod yang betul berikut:

Object[] a = new Integer[1];
Integer b=1;
a[0]=b;
Integer[] c = (Integer[]) a;

Atas ialah kandungan terperinci Mengapa Menghantar Tatasusunan Objek kepada Tatasusunan Integer Menghasilkan ClassCastException?. 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