问题描述
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("测试");
}
}
网友评论