我一直在研究Trove4j库的文档。特别是TObjectIntMap接口。根据库的文档,如果键不存在于地图中,则get方法将返回null。我要参考的文档可以在这里看到:

http://trove4j.sourceforge.net/javadocs/gnu/trove/map/TObjectIntMap.html#get%28java.lang.Object%29

在阅读时(2014年2月27日),文档指出


  int get(java.lang.Object key)
  “返回指定键所映射到的值;如果此映射不包含该键的映射,则返回null。”


我的问题是:

当返回类型为原始null时,该方法如何返回int。据我所知,Integer引用只能是null。它是文档错误吗?

最佳答案

没错,int不能为null。因此,它们的文档不一致。

为了使您更加了解Trove是如何构建的:它们具有用于数据结构的所有原始排列和对象排列的模板,因此可以理解,您无法使所有内容保持一致。您应该将此报告给项目,以便他们可以解决。

要检查键是否有值,您应该使用方法

public boolean containsKey(java.lang.Object key)


或(一种更具技巧性的解决方案)是检查所有条目的默认值:

gnu.trove.impl.Constants.DEFAULT_INT_NO_ENTRY_VALUE


如果您未覆盖gnu.trove.no_entry.int属性,则默认为0。

07-24 09:39
查看更多