gpt4 book ai didi

java - Map.of() 与 Collections.emptyMap()

转载 作者:太空狗 更新时间:2023-10-29 22:45:54 36 4
gpt4 key购买 nike

Map.of()Collections.emptyMap(),List.of()有区别吗>Collections.emptyList()Set.of()Collections.emptySet() 之间?

最佳答案

emptyXyz 返回的集合之间甚至存在行为差异,而不仅仅是技术差异。 Collections 中的工厂方法类和新of JDK 9 的接口(interface)( MapListSet )中引入的工厂方法,如果它们是在没有参数的情况下调用的。

相关区别在于新的 of 返回的集合工厂方法不允许null键和值(如 API 文档中的 ListSetMap 接口(interface)所指出的)。这听起来可能与空集合无关,但即使它没有被清楚地记录下来,即使是新集合实现中的访问器方法也会检查空值。

差异的一些例子:

Collections.emptyList().contains(null)将返回 false,而 List.of().contains(null)会抛出 NullPointerException .

Collection.emptyMap().getOrDefault(null, V)将返回 V , 而 Map.of().getOrDefault(null, V)会抛出 NullPointerException .

正如目前在 Oracle 的 JDK 9 中实现的那样,至少以下新工厂方法返回的集合上的方法将抛出 NullPointerException s,但使用 Collections 中的旧工厂方法表现得“理智”(就像集合类最初是如何设计和指定以支持空键和值一样)类:

  • List.of().contains(null);
  • Set.of().contains(null);
  • Map.of().containsKey(null);
  • Map.of().containsValue(null);
  • Map.of().getOrDefault(null, <any>);

关于java - Map.of() 与 Collections.emptyMap(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46404933/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com