为什么在尝试更新对象值时对象列表会引发异常?

问题描述

为什么下面的代码在第3行上引发ArrayStoreException:

int[] ar = {2,4};
List list = Arrays.asList(ar);
list.set(0,3);

应该在此处从Integer到int进行拆箱,但不要这样做。

解决方法

您假设Arrays.asList(ar)创建了一个List<Integer>,但这是错误的。 Arrays.asList(int[])创建一个List<int[]>,并在该数组中设置类型为int的元素说明了ArrayStoreException(将int保存在int[]数组中)。

如果您要使用相同代码的List<Integer>,请将ar声明为Integer[]。这可能是avoid using raw type的另一课(因为如果将List<Integer>用作list的数据类型,则编译器会阻止此运行时异常)