通常,我们使用Arrays.asList
或新的Java 9 List.of
创建一个List
。 但是,这两种方法都返回固定大小或不可变的List
,这意味着我们无法对其进行修改,否则它将抛出UnsupportedOperationException
。
JavaListExample.java
package com.mkyong;
import java.util.Arrays;
import java.util.List;
public class JavaListExample {
public static void main(String[] args) {
// immutable list, cant modify, java.util.Arrays$ArrayList
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
// immutable list, cant modify , java 9
List<Integer> list2 = List.of(1, 2, 3, 4, 5);
//list.add(6); // UnsupportedOperationException
list.add(6); // UnsupportedOperationException
}
}
输出量
Exception in thread "main" java.lang.UnsupportedOperationException
at java.base/java.util.AbstractList.add(AbstractList.java:153)
at java.base/java.util.AbstractList.add(AbstractList.java:111)
解
如果我们要创建一个可变列表(允许我们对其进行修改),请创建一个ArrayList
。
JavaListExample.java
package com.mkyong;
import java.util.ArrayList;
import java.util.List;
public class JavaListExample {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6); // modify the list
list.forEach(System.out::println);
}
}
输出量
1
2
3
4
5
6
参考文献
翻译自: https://mkyong.com/java/java-list-throws-unsupportedoperationexception/