List<String> strings = Arrays.asList("1", "2", "3", "4");
List<String> asList = Arrays.asList(sourceQuotationOrderDTO.getHasAgreement().split(","));
asList.retainAll(strings);
代码是这样的
报错在retainAll()方法那一行
调用Arrays.asList()生产的List的add、remove方法时报异常,这是由Arrays.asList() 返回的是Arrays的内部类ArrayList, 而不是java.util.ArrayList。Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList,remove、add等方法AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。java.util.ArrayList重写了这些方法而Arrays的内部类ArrayList没有重写,所以会抛出异常。解决方法如下:
一:
List<String> asList = Arrays.stream(sourceQuotationOrderDTO.getHasAgreement().split(",")).collect(Collectors.toList());
二:
List<String> list = Arrays.asList(array);
List arrList = new ArrayList(list);
Arrays源码
@SafeVarargs
@SuppressWarnings("varargs")
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
这里new ArrayList是创建的一个内部的ArrayList
AbstractList源码