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);