Java 9中Collection工厂方法的条件是什么?

在Java 9中,工厂方法已添加到Collections  API中。我们可以创建一个不可修改的 列表,设置映射 集合对象,以便通过使用它来减少代码行数。该List.of(),Set.of(),Map.of() ,和Map.ofEntries()静态工厂方法提供了创建的便捷方式不可改变 的集合

以下是Collection工厂方法的条件

  • 它们在结构上是不变的。

  • 它们不允许使用null元素或null键。

  • 如果所有元素都是可序列化的,则它们是可序列化的。

  • 他们在创建时拒绝重复的元素/键。

  • set元素的迭代顺序未指定,并且可能会更改。

  • 它们是基于值的。工厂可以自由创建新实例或重用现有实例。因此,对这些实例的身份敏感操作,身份哈希码和同步是不可靠的,可以避免。

语法

List.of(elements...)
Set.of(elements...)
Map.of(k1, v1, k2, v2)

示例

import java.util.Set;

public class CollectionsTest {
   public static void main(String args[]) {
      System.out.println("Java 9 Introduced a static factory method: of()");
      Set<String> immutableCountrySet = Set.of("India", "England", "South Africa", "Australia");
      System.out.println(immutableCountrySet);
      try {
         immutableCountrySet.add("Newzealand");
      } catch(Exception e) {
         System.out.println("Caught Exception, Adding Entry to Immutable Collection!");
      }
   }
}

输出结果

Java 9 Introduced a static factory method: of()[South Africa, India, Australia, England]
Caught Exception, Adding Entry to Immutable Collection!