本帖最后由 1毫秒的价值 于 2012-2-13 00:23 编辑
Arrays.asList()返回的是List,而且是一个定长的List,所以不能转换为ArrayList,只能转换为AbstractList
原因在于asList()方法返回的是某个数组的列表形式,返回的列表只是数组的另一个视图,而数组本身并没有消失,对列表的任何操作最终都反映在数组上. 所以不支持remove,add方法的
以下是测试:
Integer[] arr={1,4,6,3,2};
List<Integer> list=Arrays.asList(arr);
System.out.println(list.size()+"----"+arr[1]);
list.set(1,2);//改变此list实例里的角标1位置的值为2
System.out.println(list.size()+"----"+arr[1]);
输出结果为先4后2,可以看出改变了集合里数据的同时,数组的数值也被改变了,因此此方法返回的是一个列表视图,也可以想象成是这个数组的另一种表现形式。因此他有数组的特性,既然有数组的特性,那么数组存在以后就不能改变其长度了,当然add及remove方法后就会发生UnsuportedOperationException,既是不支持该请求操作异常
|