Menghantar Tatasusunan Objek kepada Tatasusunan Integer: Isu ClassCastException
Apabila cuba menghantar tatasusunan Objek kepada tatasusunan Integer, ralat ClassCastException mungkin timbul . Ini berlaku kerana, walaupun Integer[] merupakan subjenis Objek[], tatasusunan objek tidak boleh ditetapkan terus kepada tatasusunan integer.
Pertimbangkan kod berikut:
Object[] a = new Object[1]; Integer b=1; a[0]=b; Integer[] c = (Integer[]) a;
Kod ini menjana ClassCastException kerana baris terakhir cuba untuk menetapkan tatasusunan Objek kepada tatasusunan Integer. Untuk menyelesaikan isu ini, seseorang mesti menyalin elemen tatasusunan Objek secara manual ke tatasusunan Integer yang baru dibuat.
Integer[] intArray = new Integer[a.length]; for (int i = 0; i < a.length; i++) { intArray[i] = (Integer) a[i]; }
Sebagai alternatif, seseorang boleh menggunakan kaedah Arrays.copyOf() atau Arrays.copyOfRange():
Integer[] intArray = Arrays.copyOf(a, a.length, Integer[].class); Integer[] intArray = Arrays.copyOfRange(a, 0, a.length, Integer[].class);
Atas ialah kandungan terperinci Bagaimanakah Saya Menghantar Tatasusunan Objek dengan Selamat kepada Tatasusunan Integer di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!