我正在尝试使用一个字典。每当我想检查字典中是否存在一个元素时,我会这样做:
int value = results.get("aKeyThatMayOrMayNotBePresent");
if (value != null)
// ...
但编译器说我不能将一个int
与<nulltype>
进行比较。在这种情况下,检查null
的正确方法是什么?
我正在尝试使用一个字典。每当我想检查字典中是否存在一个元素时,我会这样做:
int value = results.get("aKeyThatMayOrMayNotBePresent");
if (value != null)
// ...
但编译器说我不能将一个int
与<nulltype>
进行比较。在这种情况下,检查null
的正确方法是什么?
你正在将一个基本类型值(int)与null进行比较。由于基本类型不能为null,因此应该使用相应的对象,在这种情况下应该使用Integer。所以,你应该写
Integer value = results.get("aKeyThatMayOrMayNotBePresent");
您的空值检查太晚了。
int value = results.get("aKeyThatMayOrMayNotBePresent");
这行代码已经将引用转换为原始的int
类型。如果get()方法返回值为null,会抛出NullPointerException异常。
正确的做法是使用Integer
代替int
。
Integer value = results.get("aKeyThatMayOrMayNotBePresent");
这样的话,值就不会是一个原始类型,并且你的空检查是有效的。
int是一种原始类型;你可以将java.lang.Integer
与null进行比较。
Object
并检查其是否为空。Object valueObj = results.get("...");
if ( valueObj != null )
{
Integer value = (Integer)valueObj;
}
你应该使用Map
而不是Dictionary
,Dictionary
已经过时了。
使用Map
,你可以使用containsKey()
,在我看来更易读:
if (results.containsKey(key))
{
int value = results.get(key);
[...]
}