就像List#of
,Set#of
和Map#ofEntries
允许我们在 Java 9中创建不可修改copyOf
的实现一样,这些方法提供了一种方便的方法来从 Java 10 中的现有s 和s (取决于方法,接受 a )创建不可修改的实现。Collection
Map
Map#copyOf
Map
这使我们可以轻松地从 a创建一个不可修改 的对象,反之亦然。Set<E>
List<E>
虽然,这些方法带来了一些警告(引用文档)java.util.List
:
- 它们是不可修改的。不能添加、删除或替换元素。调用 List 上的任何 mutator 方法总是会导致抛出 UnsupportedOperationException。但是,如果包含的元素本身是可变的,这可能会导致 List 的内容出现变化。
- 它们不允许空元素。尝试使用 null 元素创建它们会导致 NullPointerException。
- 如果所有元素都是可序列化的,则它们是可序列化的。
- 列表中元素的顺序与提供的参数或提供的数组中元素的顺序相同。
- 它们是基于价值的。调用者不应对返回的实例的身份做出任何假设。工厂可以自由创建新实例或重用现有实例。因此,对这些实例的身份敏感操作(引用相等 (==)、身份哈希码和同步)是不可靠的,应该避免。
- 它们按照序列化表单页面上的指定进行序列化。
有关 and 的注意事项Set#copyOf
,Map#copyOf
请参阅他们的文档。