在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).
Run Code Online (Sandbox Code Playgroud)
还有另一种方法,除了true-vararg之外,几乎相同:
static <K, V> Map<K, V> ofEntries(Map.Entry<? extends K, ? extends V>... entries) { /* impl here */ }
Run Code Online (Sandbox Code Playgroud)
我想使用后一种方法,因为它允许将条目数扩展到远远超过十个。问题是,我不知道如何创建Map.Entry。它在不同的Maps中有很多实现,但是没有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));
Run Code Online (Sandbox Code Playgroud)
打印map可以产生以下输出:
{One=1, Two=2}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |