案例:
执行如下代码报错:Exception in thread "main" java.lang.UnsupportedOperationException
public class TestList {
public static void main(String[] args) {
String[] array = {"1","2","3","4","5"};
List<String> list = Arrays.asList(array);
list.add("6");
}
}
原因分析:
调用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没有进行重写,所以会抛出异常。
解决办法:
public class TestList {
public static void main(String[] args) {
String[] array = {"1","2","3","4","5"};
List<String> list = Arrays.asList(array);
List newList = new ArrayList(list);
newList.add("6");
}
}
关注下面的微信公众号,获取更多的Java学习资料