码迷,mamicode.com
首页 > 编程语言 > 详细

使用 Arrays.asList 抛出 java.lang.UnsupportedOperationException

时间:2020-06-06 20:12:43      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:抛出异常   arraylist   参数   java   lang   class   util   ati   list()   

今天在复习可变与不可变的时候写了一个小demo进行测试,主要是打算测试一下函数对参数的直接修改。但是运行的时候却发现抛出了java.lang.UnsupportedOperationException这个异常。

出错位置:

public class ListTest {
    public static void main(String[] args) {
        List<Integer> list = Arrays.asList(1,2,3);
        list.add(4);
    }
}

 

查阅了一下资料,发现Arrays.asList() 返回的是Arrays的内部类ArrayList, 而不是java.util.ArrayList,而这两者又都继承了AbstractList,在AbstractList中add方法是直接默认抛出java.lang.UnsupportedOperationException这个异常的,java.util.ArrayList重写了这个方法,所以使用时不会抛出异常,但是Arrays的内部类就没有重写这个方法。

解决方案也很简单,把aslist生成的list用ArrayList重新生成一次就好了,如下

public class ListTest {
    public static void main(String[] args) {
        List<Integer> list = Arrays.asList(1, 2, 3);
        List mylist = new ArrayList(list);
        mylist.add(4);
    }
}

 

使用 Arrays.asList 抛出 java.lang.UnsupportedOperationException

标签:抛出异常   arraylist   参数   java   lang   class   util   ati   list()   

原文地址:https://www.cnblogs.com/owczhlol/p/13056166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!