版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者。
https://blog.youkuaiyun.com/weixin_43453386/article/details/94018162
解决——》java.lang.UnsupportedOperationException
1、操作
对list进行remove操作
2、现象(错误信息)
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
String[] array = {"1", "2", "3", "4", "5"};
List<String> list = Arrays.asList(array);
list.add("1");
}
}
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at com.ejudata.platform.test.Main.main(Main.java:14)
3、原因
调用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没有重写
,所以会抛出异常。
4、解决
重新new一个ArrayList
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
String[] array = {"1", "2", "3", "4", "5"};
List<String> list = Arrays.asList(array);
List<String> newList = new ArrayList<>(list);
newList.add("1");
}
}