A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李大强 于 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

        }

}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

2 个回复

倒序浏览
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);
这样就没问题。
最终理解需要你去理解。
回复 使用道具 举报
楼上的回答似乎有误哈
请查阅JDK1.4时,Arrays的asList方法

1、Arrays的asList方法接收的是一个Object类型的数组,而int类型是基本数据类型,它不是Object类型,
2、所以会抛出不支持操作异常:UnsupportedOperationException
3、比如纸箱是用来装普通货物的,你要往里面装水,你觉得合适吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马