如何在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)
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP