问题描述
在操作数组转换成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()方法,所以新增或者删除会报错。