Arrays.asList使用UnsupportedOperationException异常

问题描述

import java.util.Arrays;
import java.util.List;

 
public class ArraysListTest {

    public static void main(String[] args) {

        List<String> stringList = Arrays.asList("中国", "china", "国家");
        stringList.add("测试");
    }
}

在初始化一个List的时候图方便直接使用了Arrays.asList(T...t),但是往里面增加对象的时候报UnsupportedOperationException。


image.png

原因

new ArrayList<>返回了ArrayList对象(java.util.ArrayList)这个是一个常见的的列表类型;Arrays.asList(T...t)也可以返回了一个ArrayList,但是这个是java.util.Arrays.ArrayList(Arrays的一个内部类),名字都是ArrayList但是差别很大,Arrays.ArrayList是不可修改,增加或者删除元素都会报UnsupportedOperationException。

解决

如何将Arrays.asList转为我们正常的util包下面的ArrayList对象?可以通过new ArrayList(Arrays.asList(T... t))来实现;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class ArraysListTest {

    public static void main(String[] args) {

        List<String> stringList = new ArrayList<>(Arrays.asList("中国", "china", "国家"));
        stringList.add("测试");
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容