非常简单的代码:
int[] a = new int[]{4,1,2,3};
Array a3 = (Array) Array.newInstance(a.getClass(), a.length);
它引发异常'线程“ main”中的异常java.lang.ClassCastException:[[我无法转换为java.lang.reflect.Array'
我在哪里弄错了以及如何解决?
答案 0 :(得分:5)
Array.newInstance(a.getClass(), a.length)
创建一个二维int数组(当您创建一个元素类型为int[]
的数组时会发生这种情况),因此应该为:
int[][] a3 = (int[][]) Array.newInstance(a.getClass(), a.length);
Array
是用于通过反射创建数组实例的类,但是数组实例不是该类的实例。
顺便说一句,如果您打算创建一维int
数组(即int[]
),则应编写:
int[] a3 = (int[]) Array.newInstance(int.class, a.length);