无法检查 int 是否为空

2022-09-03 08:54:58

我正在尝试使用字典。每当我想检查字典中是否存在元素时,我都会这样做:

int value = results.get("aKeyThatMayOrMayNotBePresent");

if (value != null)
  // ...

但是编译器说我无法将 an 与 .在这种情况下,检查的正确方法是什么?int<nulltype>null


答案 1

您正在将基元值 (int) 与 null 进行比较。由于基元不能为 null,因此应使用相应的对象,在本例中为 Integer。所以,你应该写

Integer value = results.get("aKeyThatMayOrMayNotBePresent");

答案 2

您的空检查为时已晚。

int value = results.get("aKeyThatMayOrMayNotBePresent");

此行已将引用转换为基元 。如果 get 的返回值为 null,它将引发 NullPointerException。int

正确的方法是使用 代替 。Integerint

Integer value = results.get("aKeyThatMayOrMayNotBePresent");

这样,值将不是基元类型,并且空检查有效。