集合
*1.list.add也会报错**
public static void main(String[] args) {
String[] demo ={"a","c","d"};
List<String> list= Arrays.asList(demo);//数组转成集合
list.add("e");
System.out.println(list.size());
}
报错
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at cn.ddserver.facelogin.demo1.main(demo1.java:11)
调用Arrays.asList()生产的List的add、remove方法时报异常,这是由Arrays.asList() 返回的是 Arrays的内部类ArrayList,
public static <T> List<T> asList(T... a) { //工具类转换方法
return new ArrayList<>(a);
}
//返回的是 Arrays里面一个 静态的类
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable
而不是java.util.ArrayList。Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList,remove、add等方法AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。java.util.ArrayList重新了这些方法而Arrays的内部类ArrayList没有重新,所以会抛出异常。