在原始返回类型函数上返回"null"?

ido*_*ize 7 java

我有一个函数,它返回int给定键的值(来自a HashMap<String, Integer>).如果密钥不存在,我想返回调用者可以检查的内容.似乎,最常见的是,这将是" 如果键不存在则返回-1 "的事情.然而,我无法保留-1,在我的情况是目的,因为负数是哪个键是可行的值存在.

我能够提出的唯一其他选择如下:

  1. 将返回类型更改为Integer包装类并检查null
  2. 返回一些不太可能的东西,例如 Integer.MIN_VALUE
  3. 创建一个boolean keyExists(String key)应该始终首先调用的附加功能
  4. 切换到float和使用NaN,而不是

我是用Java编写的,但欢迎来自相似语言背景的人发帖.谢谢!

Hut*_*ut8 14

在我看来,第一种选择是最干净的选择.像-1和Integer.MIN_VALUE这样的幻数有点混乱,尤其是当值不直观时.这是一个惯用的C解决方案,Java开发人员会讨厌你.根据你实际使用它的原因,你也可以抛出一个"KeyNotFoundException",如果这只发生在"异常"情况下.