Java 9工厂方法

本文概述

  • 工厂收集方法
  • Java 9列表工厂方法示例
  • Java 9 Set接口
  • Java 9 Set接口工厂方法
  • Java 9 Map Interface工厂方法
  • Java 9 Map Interface工厂方法
  • Java 9 Map Interface Factory方法示例
  • Java 9 Map Interface ofEntries()方法示例
Java 9 Collection库包括用于List, Set和Map接口的静态工厂方法。这些方法对于创建少量集合很有用。
假设, 如果要创建5个元素的列表, 则需要编写以下代码。
Java列表示例
import java.util.ArrayList; import java.util.List; public class FactoryMethodsExample { public static void main(String[] args) {List< String> list = new ArrayList< > (); list.add("Java"); list.add("JavaFX"); list.add("Spring"); list.add("Hibernate"); list.add("JSP"); for(String l : list){System.out.println(l); } }}

输出:
JavaJavaFXSpringHibernateJSP

在上面的代码中, 为每个列表元素重复调用add方法, 而在Java 9中, 我们可以使用工厂方法在单行代码中进行添加方法。
工厂收集方法工厂方法是静态方法的一种特殊类型, 用于创建集合的不可修改实例。这意味着我们可以使用这些方法来创建少量元素的列表, 集合和映射。
【Java 9工厂方法】它是不可修改的, 因此添加新元素将引发java.lang.UnsupportedOperationException
每个接口都有其自己的工厂方法, 下表中列出了所有方法。
列表界面的工厂方法
修饰符 方法 描述
静态< E> 列表< E> Of() 它返回一个包含零个元素的不可变列表。
静态< E> 列表< E> of(E e1) 它返回一个包含一个元素的不可变列表。
静态< E> 列表< E> of(E… elements) 它返回一个包含任意数量元素的不可变列表。
静态< E> 列表< E> of(E e1, E e2) 它返回一个包含两个元素的不可变列表。
静态< E> 列表< E> of(E e1, E e2, E e3) 它返回一个包含三个元素的不可变列表。
静态< E> 列表< E> of(E e1, E e2, E e3, E e4) 它返回一个包含四个元素的不可变列表。
静态< E> 列表< E> of(E e1, E e2, E e3, E e4, E e5) 它返回一个包含五个元素的不可变列表。
静态< E> 列表< E> of(E e1, E e2, E e3, E e4, E e5, E e6) 它返回一个包含六个元素的不可变列表。
静态< E> 列表< E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7) 它返回一个包含七个元素的不可变列表。
静态< E> 列表< E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8) 它返回一个包含八个元素的不可变列表。
静态< E> 列表< E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9) 它返回一个包含九个元素的不可变列表。
静态< E> 列表< E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10) 它返回一个包含十个元素的不可变列表。
Java 9列表工厂方法示例在Java 9中, 我们可以借助List.of()工厂方法以各种简单的方式编写此代码。
import java.util.List; public class FactoryMethodsExample { public static void main(String[] args) {List< String> list = List.of("Java", "JavaFX", "Spring", "Hibernate", "JSP"); for(String l:list) {System.out.println(l); } }}

输出:
JavaJavaFXSpringHibernateJSP

Java 9 Set接口Java Set接口提供了一个Set.of()静态工厂方法, 该方法用于创建不可变的集合。用此方法创建的set实例具有以下特征。
  • 这是一成不变的
  • 没有空元素
  • 如果所有元素都是可序列化的, 则它是可序列化的。
  • 没有重复的元素。
  • set元素的迭代顺序未指定, 可能会发生变化。
Java 9 Set接口工厂方法下表包含Set接口的工厂方法。
修饰符和类型 方法 描述
静态< E> 设置< E> of() 它返回一个包含零个元素的不可变集合。
静态< E> 设置< E> of(E e1) 它返回一个包含一个元素的不可变集合。
静态< E> 设置< E> of(E… elements) 它返回一个包含任意数量元素的不可变集合。
静态< E> 设置< E> of(E e1, E e2) 它返回一个包含两个元素的不可变集合。
静态< E> 设置< E> of(E e1, E e2, E e3) 它返回一个包含三个元素的不可变集合。
静态< E> 设置< E> of(E e1, E e2, E e3, E e4) 它返回一个包含四个元素的不可变集合。
静态< E> 设置< E> of(E e1, E e2, E e3, E e4, E e5) 它返回一个包含五个元素的不可变集合。
静态< E> 设置< E> 它返回一个包含六个元素的不可变集合。
静态< E> 设置< E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7) 它返回一个包含七个元素的不可变集合。
静态< E> 设置< E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8) 它返回一个包含八个元素的不可变集合。
静态< E> 设置< E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9) 它返回一个包含九个元素的不可变集合。
静态< E> 设置< E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10) 它返回一个包含十个元素的不可变集合。
Java 9 Set接口工厂方法示例
import java.util.Set; public class FactoryMethodsExample { public static void main(String[] args) {Set< String> set = Set.of("Java", "JavaFX", "Spring", "Hibernate", "JSP"); for(String l:set) {System.out.println(l); } }}

输出:
SpringJavaFXJSPJavaHibernate

Java 9 Map Interface工厂方法在Java 9中, Map包含Map.of()和Map.ofEntries()静态工厂方法, 这些方法提供了创建不可变地图的便捷方法。
这些方法创建的地图具有以下特征。
  • 这是一成不变的
  • 它不允许空键和值
  • 如果所有键和值都可序列化, 则可序列化
  • 它在创建时拒绝重复的密钥
  • 映射的迭代顺序不确定, 可能会发生变化。
Java 9 Map Interface工厂方法下表包含Map接口的工厂方法。
修饰符和类型 方法 描述
静态< K, V> 映射< K, V> of() 它返回一个包含零映射的不可变映射。
静态< K, V> 映射< K, V> of(K k1, V v1) 它返回一个包含单个映射的不可变映射。
静态< K, V> 映射< K, V> of(K k1, V v1, K k2, V v2) 它返回一个包含两个映射的不可变映射。
静态< K, V> 映射< K, V> of(K k1, V v1, K k2, V v2, K k3, V v3) 它返回一个包含三个映射的不可变映射。
静态< K, V> 映射< K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) 它返回一个包含四个映射的不可变映射。
静态< K, V> 映射< K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) 它返回一个包含五个映射的不可变映射。
静态< K, V> 映射< K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6) 它返回一个包含六个映射的不可变映射。
静态< K, V> 映射< K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7) 它返回一个包含七个映射的不可变映射。
静态< K, V> 映射< K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8) 它返回一个包含八个映射的不可变映射。
静态< K, V> 映射< K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9) 它返回一个包含九个映射的不可变映射。
静态< K, V> 映射< K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10) 它返回一个包含十个映射的不可变映射。
静态< K, V> 映射< K, V> ofEntries(Map.Entry < ?扩展K , ?扩展V> … 条目) 它返回一个不变的映射, 其中包含从给定条目中提取的键和值。
Java 9 Map Interface Factory方法示例
import java.util.Map; public class FactoryMethodsExample { public static void main(String[] args) {Map< Integer, String> map = Map.of(101, "JavaFX", 102, "Hibernate", 103, "Spring MVC"); for(Map.Entry< Integer, String> m : map.entrySet()){System.out.println(m.getKey()+" "+m.getValue()); } }}

输出:
102 Hibernate103 Spring MVC101 JavaFX

Java 9 Map Interface ofEntries()方法示例在Java 9中, 除了静态Map.of()方法之外, Map接口还包含一个静态方法Map.ofEntries()。此方法用于创建Map.Entry实例的地图。
在以下示例中, 我们将在多个map.entry实例的帮助下创建地图实例。
import java.util.Map; public class FactoryMethodsExample { public static void main(String[] args) {// Creating Map EntryMap.Entry< Integer, String> e1 = Map.entry(101, "Java"); Map.Entry< Integer, String> e2 = Map.entry(102, "Spring"); // Creating Map using map entriesMap< Integer, String> map = Map.ofEntries(e1, e2); // Iterating Map for(Map.Entry< Integer, String> m : map.entrySet()){System.out.println(m.getKey()+" "+m.getValue()); } }}

输出:
102 Spring101 Java

    推荐阅读