为什么Map.of不允许空键和值?
在Java 9,新的工厂方法已经出台了List,Set和Map接口。这些方法允许快速实例化一行中包含值的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) .. 我无法获得,为什么在第二种情况下不允许null。 我知道HashMap可以将null作为键和值,但是在Map.of的情况下为什么要限制它呢? java.util.Set.of("v1", "v2", null)和的情况相同java.util.List.of("v1", "v2", null)。