java.lang.UnsupportedOperationException异常
过程
package com.wangbo.java8.test;
import java.util.Arrays;
import java.util.List;
public class UnsupportedOperationExceptionTest {
public static void main(String[] args) {
String[] array = {"1","2","3"};
List<String> strList = Arrays.asList(array);
System.out.println(strList);
strList.add("4");
System.out.println(strList);
}
}
运行结果
[1, 2, 3]
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.wangbo.java8.test.UnsupportedOperationExceptionTest.main(UnsupportedOperationExceptionTest.java:11)
原因
Arrays.asList(array)时new的ArrayList是java.util.Array中的ArrayList,这个类继承了AbstractList
在AbstractList中add、set、remove方法默认抛出UnsupportedOperationException异常
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
所以解决办法
package com.wangbo.java8.test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class UnsupportedOperationExceptionTest {
public static void main(String[] args) {
String[] array = {"1","2","3"};
List<String> strList = Arrays.asList(array);
System.out.println(strList);
List<String> list = new ArrayList<String>(strList);
list.add("4");
System.out.println(list);
}
}