Rumah  >  Artikel  >  Java  >  Bagaimanakah Saya Menghantar Tatasusunan Objek dengan Selamat kepada Tatasusunan Integer di Jawa?

Bagaimanakah Saya Menghantar Tatasusunan Objek dengan Selamat kepada Tatasusunan Integer di Jawa?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 21:50:02375semak imbas

How Do I Safely Cast an Object Array to an Integer Array in Java?

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!

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