错误信息:”Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
这个异常是下面的代码抛出的:
List<Integer> list = new ArrayList<Integer>();
Integer[] array = (Integer[])list.toArray();
这个类型转换看上去好像很对,也不会有编译错误。
但是实际上是错误的,因为list.toArray返回类型是Object[],而Integer[]不是Object[]的子类,虽然Integer是Object的子类,所以不能进行强制转换。
正确的做法应该是这样的:
List<Integer> list = new ArrayList<Integer>();
Integer[] array = new Integer[1];
array = list.toArray(array);
把数组类型传入toArray方法,通过反射获得参数类型,在方法内部进行转换。