问题描述
在操作数组转换成List的时候,对其进行元素的添加或者删除的时候报错。
场景
private void testArrayCastToListError() {
String[] strArray = new String[3];
List list = Arrays.asList(strArray);
//对转换后的list插入一条数据
list.add("a");
System.out.println(list);
}
异常堆栈信息
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.darwin.junit.Calculator.testArrayCastToList(Calculator.java:19)
at com.darwin.junit.Calculator.main(Calculator.java:44)
原因分析
Arrays.asList(strArray)产生的list只可以对其进行查询和修改
,如果对其进行删除或者新增
,则就会抛出异常。
Arrays.asList(strArray)返回值是java.util.Arrays类中一个私有静态内部类java.util.Arrays.ArrayList具有 set(),get()等方法,不具有添加add()或remove()方法,所以新增或者删除会报错。