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!