如何在Java 9中建立不可修改的列表?


如果列表中的元素在建立不可修改的列表例項後無法被**新增**、**刪除**或**替換**,則該列表被認為是**不可修改的**。靜態工廠方法:**List.of()** 提供了一種在**Java 9**中建立不可修改列表的便捷方法。

使用**List.of()**方法建立的列表例項具有以下特徵。

  • 工廠方法返回的列表通常是**不可變的**。這意味著列表中的元素無法被**新增**、**刪除**或**替換**。在列表上呼叫任何**修改器**方法都會導致**UnsupportedOperationException**異常。
  • 如果列表的包含元素是**可變的**,則可能會導致列表的內容看起來發生了變化。
  • 可以使用不允許**空元素**的靜態工廠方法建立不可變列表。如果嘗試使用空元素建立,則會丟擲**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)

更新於:2020年2月21日

407 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告