如何在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 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.