在写测试方法时,对数组Arrays.asList(str);处理生成的list进行add、remove操作时报错;
public static void main(String[] args) {
String[] str = {"aa","bb","cc","dd"};
List<String> list = Arrays.asList(str);
list.add("ff");
List<String> arr = new ArrayList<>();
}
报错信息:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:161)
查看asList方法源码,发现返回的是是Arrays的内部类ArrayList,虽然他继承了AbstractList类,但是没有重写add和remove方法,所以执行失败报错;
而相对于java.util.ArrayList;也继承了AbstractList类,但是重写了add和remove操作,所以对于new ArrayList<>();可以执行add和remove操作。