错误信息:”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方法,通过反射获得参数类型,在方法内部进行转换。
本文详细解释了Java中List到数组转换时出现的ClassCastException异常原因,并提供了正确的转换方法。
426

被折叠的 条评论
为什么被折叠?



