黑马程序员技术交流社区
标题:
为什么API文档上所解释的问题与程序实际运行不符?
[打印本页]
作者:
李大强
时间:
2013-2-5 16:28
标题:
为什么API文档上所解释的问题与程序实际运行不符?
本帖最后由 李大强 于 2013-2-12 10:38 编辑
Array是类的asList()方法将返回一个list集合,API文档上说“对返回列表的更改会“直接写”到数组”,但我用下面的程序进行测试
时,为什么却抛出了java.lang.UnsupportedOperationException?
源程序如下:
import java.util.*;
public class Test2
{
public static void main(String[] args)
{
int[] array1={1,2,3,4};
int[] array2={5,6,7,8};
List<int[]> list=Arrays.asList(array1);
for(int[] a:list)
{
for(int b:a)
{
System.out.println(b);
}
}
list.add(array2);//抛出java.lang.UnsupportedOperationException
}
}
作者:
王少雷
时间:
2013-2-5 18:30
list.add(array2);//抛出java.lang.UnsupportedOperationException
这句代码抛出异常是因为
List<int[]> list=Arrays.asList(array1);
返回一个受指定数组支持的固定大小的列表,而不是返回一个 所谓真正的List<int []>的对象
如果用List<int[]> list1 = new ArrayList<int []>();
list1.add(array1);
list1.add(array2);
这样就没问题。
最终理解需要你去理解。
作者:
胡发友
时间:
2013-2-5 21:53
楼上的回答似乎有误哈
请查阅JDK1.4时,Arrays的asList方法
1、Arrays的asList方法接收的是一个Object类型的数组,而int类型是基本数据类型,它不是Object类型,
2、所以会抛出不支持操作异常:UnsupportedOperationException
3、比如纸箱是用来装普通货物的,你要往里面装水,你觉得合适吗?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2