在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!