为什么 Map.of 不允许空键和值?但是为什么?
在 Java 9 中,为 和 接口引入了新的工厂方法。这些方法允许在一行中快速实例化值的 Map 对象。现在,如果我们考虑:List
Set
Map
Map<Integer, String> map1 = new HashMap<Integer, String>(Map.of(1, "value1", 2, "value2", 3, "value3"));
map1.put(4, null);
上述情况是允许的,没有任何例外,而如果我们这样做:
Map<Integer, String> map2 = Map.of(1, "value1", 2, "value2", 3, "value3", 4, null );
它抛出:
Exception in thread "main" java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:221)
..
我无法理解,为什么在第二种情况下不允许空。
我知道HashMap可以将null作为键和值,但是为什么在Map.of的情况下受到限制?
在 和 的情况下也会发生同样的情况。java.util.Set.of("v1", "v2", null)
java.util.List.of("v1", "v2", null)