问题描述
为什么下面的代码在第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
的数据类型,则编译器会阻止此运行时异常)