我一直在研究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。