我们如何在Java 9中创建不可修改的列表?

考虑的列表是不可修改的 ,如果元素不能被添加去除,或更换 一次的列表的不可修改的实例已经建立从一个列表。静态工厂方法List.of() 提供了一种方便的方法来在Java 9中创建不可修改的列表。

通过使用List.of()方法创建的列表的实例具有以下特征。

  • 通过工厂方法返回的列表通常是不可变的。这意味着不能从列表中添加删除替换 元素。调用List上的任何mutator 方法都会导致UnsupportedOperationException

  • 如果List包含的元素是mutable,则可能导致List的内容似乎发生变化。

  • 可以使用不允许空元素的静态工厂方法创建不可变列表。如果我们尝试使用null元素创建,则会抛出NullPointerException

  • 如果所有元素都可序列化,则不可修改列表可序列 化。

  • 列表中元素的顺序与提供的参数或提供的数组中的元素的顺序相同。

语法

List.of(E... elements)

示例

import java.util.List;
public class UnmodifiedListTest {
   public static void main(String[] args) {      List<String> countries = List.of("India", "Australia", "England", "Newzealand");
      System.out.println("Countries - " + countries);
      countries.add("Srilanka"); // throws UnsupportedOperationException   }
}

输出结果

Countries - [India, Australia, England, Newzealand]
Exception in thread "main" java.lang.UnsupportedOperationException
 at java.base/java.util.ImmutableCollections.uoe(Unknown Source)
 at java.base/java.util.ImmutableCollections$AbstractImmutableList.add(Unknown Source)
 at UnmodifiedListTest.main(UnmodifiedListTest.java:7)