The following code snippet encounters an error:
Object[] a = new Object[1]; Integer b=1; a[0]=b; Integer[] c = (Integer[]) a;
The error, "java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;", occurs in the last line.
Reason:
The problem arises because you cannot treat an array of integers as an array of objects. While Integer[] is a subtype of Object[], Object[] is not a subtype of Integer[].
Therefore, attempting to cast an Object[] to an Integer[] results in a ClassCastException.
Alternative Code:
To address this issue, use one of the following methods:
Integer[] integerArray = Arrays.copyOf(a, a.length, Integer[].class); Integer[] integerArray = Arrays.copyOfRange(a, 0, a.length, Integer[].class);
Alternatively, you can prevent the ClassCastException by ensuring that the array elements are all of type Integer, as in the following correct code:
Object[] a = new Integer[1]; Integer b=1; a[0]=b; Integer[] c = (Integer[]) a;
The above is the detailed content of Why Does Casting an Object Array to an Integer Array Result in a ClassCastException?. For more information, please follow other related articles on the PHP Chinese website!