java Array.newInstance 抛出 ClassCastException,为什么?
java Array.newInstance throws ClassCastException, why?
非常简单的代码:
int[] a = new int[]{4,1,2,3};
Array a3 = (Array) Array.newInstance(a.getClass(), a.length);
抛出异常'Exception in thread "main" java.lang.ClassCastException: [[I cannot be cast to java.lang.reflect.Array'
我哪里做错了,如何改正?
Array.newInstance(a.getClass(), a.length)
创建一个二维 int 数组(创建元素类型为 int[]
的数组时会发生这种情况),因此它应该是:
int[][] a3 = (int[][]) Array.newInstance(a.getClass(), a.length);
Array
是一个 class 用于创建带反射的数组实例,但数组实例不是 class.
的实例
顺便说一句,如果你打算创建一个一维 int
数组(即 int[]
),你应该写:
int[] a3 = (int[]) Array.newInstance(int.class, a.length);
非常简单的代码:
int[] a = new int[]{4,1,2,3};
Array a3 = (Array) Array.newInstance(a.getClass(), a.length);
抛出异常'Exception in thread "main" java.lang.ClassCastException: [[I cannot be cast to java.lang.reflect.Array'
我哪里做错了,如何改正?
Array.newInstance(a.getClass(), a.length)
创建一个二维 int 数组(创建元素类型为 int[]
的数组时会发生这种情况),因此它应该是:
int[][] a3 = (int[][]) Array.newInstance(a.getClass(), a.length);
Array
是一个 class 用于创建带反射的数组实例,但数组实例不是 class.
顺便说一句,如果你打算创建一个一维 int
数组(即 int[]
),你应该写:
int[] a3 = (int[]) Array.newInstance(int.class, a.length);