1

我一直在研究 Trove4j 库的文档。特别是TObjectIntMap界面。根据库的文档,null如果地图中不存在密钥,则 get 方法返回。我指的文档可以在这里看到:

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

在阅读(27/02/2014)时,文档状态

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

我的问题是:

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

4

1 回答 1

1

你是对的,int不能为空。因此他们的文档是不一致的。

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

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

public boolean containsKey(java.lang.Object key)

或者(一个更hacky的解决方案)是检查没有条目的默认值:

gnu.trove.impl.Constants.DEFAULT_INT_NO_ENTRY_VALUE

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

于 2014-02-27T10:41:52.577 回答