以下代码有什么问题?
Object[] a = new Object[1]; Integer b=1; a[0]=b; Integer[] c = (Integer[]) a;
该代码在最后一行有以下错误:
线程“主”中的异常java.lang.ClassCastException:[Ljava.lang.Object; 无法转换为[Ljava.lang.Integer;
可以使用Arrays.copyof()或Arrays.copyOfRange()。
Arrays.copyof()
Arrays.copyOfRange()
Integer[] integerArray = Arrays.copyOf(a, a.length, Integer[].class); Integer[] integerArray = Arrays.copyOfRange(a, 0, a.length, Integer[].class);
在这里点击的原因ClassCastException是你不能将的数组Integer视为的数组Object。Integer[]是的子类型,Object[]但Object[]不是的子类型Integer[]。
ClassCastException
Integer
Object
Integer[]
Object[]
并且以下内容也不会给出ClassCastException。
Object[] a = new Integer[1]; Integer b=1; a[0]=b; Integer[] c = (Integer[]) a;