黑马程序员技术交流社区

标题: 为什么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