无法检查int是否为null

Pie*_*ter 15 java null dictionary

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

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

if (value != null)
  // ...
Run Code Online (Sandbox Code Playgroud)

但后来编译器说我无法将a int与a 进行比较<nulltype>.null在这种情况下检查的正确方法是什么?

dar*_*ioo 24

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

Integer value = results.get("aKeyThatMayOrMayNotBePresent");
Run Code Online (Sandbox Code Playgroud)


jos*_*efx 18

你的空检查为时已晚.

int value = results.get("aKeyThatMayOrMayNotBePresent");
Run Code Online (Sandbox Code Playgroud)

该行已将引用转换为基元int.如果get的返回值为null,它将抛出NullPointerException.

正确的方法是使用Integer而不是int.

Integer value = results.get("aKeyThatMayOrMayNotBePresent");
Run Code Online (Sandbox Code Playgroud)

这种方式的值不是原始类型,并且您的空检查有效.