Java 11 个不可变映射:创建 Map.Entry

Java 11 immutable map: create Map.Entry

在Java 11中有一组静态方法在java.util.Map中允许实例化AbstractImmutableMap:

static <K, V> Map<K, V> of(K k1, V v1) { return new Map1(k1, v1); }
static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2) { return new MapN(new Object[]{k1, v1, k2, v2}); }
// ... some more "vararg" static methods until 10 pairs (inclusive).

还有另一种方法,几乎​​相同,除了它是 true-vararg:

static <K, V> Map<K, V> ofEntries(Map.Entry<? extends K, ? extends V>... entries) { /* impl here */ }

我想使用后一种方法,因为它允许将条目数扩展到十个以上。问题是,我不知道如何创建 Map.Entry。它在不同的 Map 中有很多实现,但是没有 new 运算符或静态结构方法,而 Map 有。

Map#ofEntries 也在 Map#copyOf 内部使用,但如果没有已经存在的 Map 实现和其中的一些条目,我找不到使用它的方法。 :/

我已经尝试搜索它,但找不到答案。

➥ 所以,我的问题是:它打算如何使用 Map#ofEntries?或者有一种方法可以实例化 Map.Entry 而无需编写自己的实现或使用匿名 类?

您可以使用 static Map#entry 方法来创建 Map.Entry 的单个不可修改的实例:

Map<String, Integer> map = Map.ofEntries(Map.entry("One", 1), Map.entry("Two", 2));

打印 map 会导致以下输出:

{One=1, Two=2}