Java 9 工厂方法2024 年 8 月 29 日 | 阅读 6 分钟 Java 9 集合库包含 List、Set 和 Map 接口的静态工厂方法。 这些方法对于创建少量集合很有用。 例如,如果我们想创建一个包含 5 个元素的列表,我们需要编写以下代码。
Java 列表示例输出 Java
JavaFX
Spring
Hibernate
JSP
在上面的代码中,对于每个列表元素,add 方法被重复调用,而在 Java 9 中,我们可以使用工厂方法在一行代码中完成它。
集合的工厂方法工厂方法是特殊类型的静态方法,用于创建集合的不可修改实例。这意味着我们可以使用这些方法来创建包含少量元素的列表、集合和映射。 它是不可修改的,因此添加新元素将抛出java.lang.UnsupportedOperationException 每个接口都有自己的工厂方法,我们正在下表中列出所有方法。
List 接口的工厂方法修饰符 | 方法 | 描述 |
---|
static <E> List<E> | Of() | 它返回一个包含零个元素的不可修改列表。 | static <E> List<E> | of(E e1) | 它返回一个包含一个元素的不可修改列表。 | static <E> List<E> | of(E... elements) | 它返回一个包含任意数量元素的不可修改列表。 | static <E> List<E> | of(E e1, E e2) | 它返回一个包含两个元素的不可修改列表。 | static <E> List<E> | of(E e1, E e2, E e3) | 它返回一个包含三个元素的不可修改列表。 | static <E> List<E> | of(E e1, E e2, E e3, E e4) | 它返回一个包含四个元素的不可修改列表。 | static <E> List<E> | of(E e1, E e2, E e3, E e4, E e5) | 它返回一个包含五个元素的不可修改列表。 | static <E> List<E> | of(E e1, E e2, E e3, E e4, E e5, E e6) | 它返回一个包含六个元素的不可修改列表。 | static <E> List<E> | of(E e1, E e2, E e3, E e4, E e5, E e6, E e7) | 它返回一个包含七个元素的不可修改列表。 | static <E> List<E> | of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8) | 它返回一个包含八个元素的不可修改列表。 | static <E> List<E> | of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9) | 它返回一个包含九个元素的不可修改列表。 | 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) | 它返回一个包含十个元素的不可修改列表。 |
Java 9 列表工厂方法示例在 Java 9 中,借助List.of() 工厂方法,我们可以用非常简单的方式编写此代码。 输出 Java
JavaFX
Spring
Hibernate
JSP
Java 9 Set 接口Java Set 接口提供了一个 Set.of() 静态工厂方法,该方法用于创建不可修改的集合。 这种方法创建的集合实例具有以下特征。 - 它是不可修改的
- 没有空元素
- 如果所有元素都可序列化,则它是可序列化的。
- 没有重复的元素。
- 集合元素的迭代顺序是不确定的,并且可能会发生变化。
Java 9 Set 接口工厂方法下表包含 Set 接口的工厂方法。 修饰符和类型 | 方法 | 描述 |
---|
static <E> Set<E> | of() | 它返回一个包含零个元素的不可修改集合。 | static <E> Set<E> | of(E e1) | 它返回一个包含一个元素的不可修改集合。 | static <E> Set<E> | of(E... elements) | 它返回一个包含任意数量元素的不可修改集合。 | static <E> Set<E> | of(E e1, E e2) | 它返回一个包含两个元素的不可修改集合。 | static <E> Set<E> | of(E e1, E e2, E e3) | 它返回一个包含三个元素的不可修改集合。 | static <E> Set<E> | of(E e1, E e2, E e3, E e4) | 它返回一个包含四个元素的不可修改集合。 | static <E> Set<E> | of(E e1, E e2, E e3, E e4, E e5) | 它返回一个包含五个元素的不可修改集合。 | static <E> Set<E> | 它返回一个包含六个元素的不可修改集合。 | static <E> Set<E> | of(E e1, E e2, E e3, E e4, E e5, E e6, E e7) | 它返回一个包含七个元素的不可修改集合。 | static <E> Set<E> | of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8) | 它返回一个包含八个元素的不可修改集合。 | static <E> Set<E> | of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9) | 它返回一个包含九个元素的不可修改集合。 | static <E> Set<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 接口工厂方法示例输出 Spring
JavaFX
JSP
Java
Hibernate
Java 9 Map 接口工厂方法在 Java 9 中,Map 包括 Map.of() 和 Map.ofEntries() 静态工厂方法,这些方法提供了一种创建不可修改映射的便捷方法。 这些方法创建的 Map 具有以下特征。 - 它是不可修改的
- 它不允许空键和值
- 如果所有键和值都可序列化,则它是可序列化的
- 它在创建时拒绝重复的键
- 映射的迭代顺序是不确定的,并且可能会发生变化。
Java 9 Map 接口工厂方法下表包含 Map 接口的工厂方法。 修饰符和类型 | 方法 | 描述 |
---|
static <K,V> Map<K,V> | of() | 它返回一个包含零个映射的不可修改映射。 | static <K,V> Map<K,V> | of(K k1, V v1) | 它返回一个包含单个映射的不可修改映射。 | static <K,V> Map<K,V> | of(K k1, V v1, K k2, V v2) | 它返回一个包含两个映射的不可修改映射。 | static <K,V> Map<K,V> | of(K k1, V v1, K k2, V v2, K k3, V v3) | 它返回一个包含三个映射的不可修改映射。 | static <K,V> Map<K,V> | of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) | 它返回一个包含四个映射的不可修改映射。 | static <K,V> Map<K,V> | of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) | 它返回一个包含五个映射的不可修改映射。 | static <K,V> Map<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) | 它返回一个包含六个映射的不可修改映射。 | static <K,V> Map<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) | 它返回一个包含七个映射的不可修改映射。 | static <K,V> Map<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) | 它返回一个包含八个映射的不可修改映射。 | static <K,V> Map<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) | 它返回一个包含九个映射的不可修改映射。 | static <K,V> Map<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) | 它返回一个包含十个映射的不可修改映射。 | static <K,V> Map<K,V> | ofEntries(Map.Entry<? extends K,? extends V>... entries) | 它返回一个不可修改的映射,其中包含从给定条目中提取的键和值。 |
Java 9 Map 接口工厂方法示例输出 102 Hibernate
103 Spring MVC
101 JavaFX
Java 9 Map 接口 ofEntries() 方法示例在 Java 9 中,除了静态的 Map.of() 方法之外,Map 接口还包含另一个静态方法 Map.ofEntries()。 此方法用于创建 Map.Entry 实例的映射。 在下面的示例中,我们正在借助多个 map.entry 实例创建 map 实例。 输出
|