java9不可变列表示例
时间:2020-02-23 14:37:04 来源:igfitidea点击:
这个示例演示了如何用Java方法创建不可变的集合
随着Java9的发布,Oracle在获取其他流行的JVM语言(如Kotlin、Guava、Scala等)的工作实践方面迈出了一步。这是在适当考虑JDK的向后兼容性和语法一致性的前提下完成的。Java9的这些新特性之一是创建不可变(不可修改)列表。
Java9不可变列表示例
在Java9之前,不可变列表的创建是一项冗长的任务。例如,为了使用Java 9之前的版本创建一个空的不可变列表,我们使用了以下代码:
package theitroad.local; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class UnmodifiableListExample { public static void main(String[] args) { List<String> emptyList = new ArrayList<>(); List<String> immutableList = Collections.unmodifiableList(emptyList); } }
什么是不可变列表
一旦在Java中创建了不可变的对象就不能更改值。不可变列表也不例外。你可以 不能:
在列表中添加或者删除条目。如果你尝试这样做,这将在
java.lang.UnsupportedOperationException
修改列表的元素。这样做会导致
java.lang.UnsupportedOperationException
向列表中添加空元素。如果我们尝试向列表中添加一个null元素,那么我们将得到一个
java.lang.NullPointerException
在Java9中创建空的不可变列表
要在Java9中创建一个空列表,我们只需调用factory list方法
of()
,请参阅下面的示例
package theitroad.local; import java.util.List; public class Java9EmptyImmutableListExample { public static void main(String[] args) { List<String> emptyList = List.of(); } }
用java9中的元素创建不可变列表
有10种工厂方法来创建最多10个元素的不可变列表(来源:Java 9 List interface Javadoc):
static <E> List<E> of(E e1) Returns an immutable list containing one element. static <E> List<E> of(E e1, E e2) Returns an immutable list containing two elements. static <E> List<E> of(E e1, E e2, E e3) Returns an immutable list containing three elements. static <E> List<E> of(E e1, E e2, E e3, E e4) Returns an immutable list containing four elements. static <E> List<E> of(E e1, E e2, E e3, E e4, E e5) Returns an immutable list containing five elements. static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6) Returns an immutable list containing six elements. static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7) Returns an immutable list containing seven elements. static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8) Returns an immutable list containing eight elements. static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9) Returns an immutable list containing nine elements. static <E> List<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10) Returns an immutable list containing ten elements.
以及一个参数数目可变的方法,它允许我们创建具有所需数量元素的不可变列表:
static <E> List<E> of(E... elements)
下面的示例创建了一个由3个元素组成的不可变列表:
package theitroad.local; import java.util.List; public class Java9ImmutableListExample { public static void main(String[] args) { List<String> list = List.of("A", "B", "C"); } }