来自 if 语句的奇怪的 NullPointerException
Weird NullPointerException from if statement
我有一个 if 语句 returning NullPointerException。
原因:比较两个对象,其中一个为null:
Object obj;
if (obj.toString.equals("string"))
{ //do something }
else
{ //do another something }
我怎么知道 obj 是空的?
如果我尝试打印该对象 (System.out.println(obj.toString()
),逻辑上我也会得到一个 NullPointer。当我点击错误时,它没有选择 if 语句对应的行,而是选择了我的 System.out 语句,表明错误源是我的对象(另外,我很清楚对象是否 return s 在我的数据库中为 null,在我的例子中,“null”关键字出现在我的语句中“string”的位置。
考虑到我确实知道我的 obj 为空(即使通过检查它在我的数据库中为空),不可能将它与另一个对象进行比较,因为显然 if 语句是当其中之一为空时无法比较对象.
我通过检查以下代码(如上所述)知道:
Object obj;
if (obj.toString.equals(null))
{ //do something }
该语句 return 不应该是真的吗? 因为它没有执行 if 块中的内容。
主要是,编译器读到if (obj.toString.equals("string"))
的时候,因为是false(因为obj不等于" string") 应该落入我的 else 块,但那没有发生。
Any thoughts?
例如,当我说我单击错误并将我带到 if 语句行(或我的 System.out 行,用于对象验证)时,这就是我的意思:
您需要明确检查文字值 null
。在下面的示例中,如果非空检查失败,则不会执行 运行 &&
之后的语句;第一个检查短路表达式的其余部分
Object obj;
if (obj != null && obj.toString().equals("string")) {
//do something
}
else {
//do another something
}
注:
null
是一个字面值(类似于true和false)。所以你不应该像 String
. 那样比较它
我有一个 if 语句 returning NullPointerException。
原因:比较两个对象,其中一个为null:
Object obj;
if (obj.toString.equals("string"))
{ //do something }
else
{ //do another something }
我怎么知道 obj 是空的?
如果我尝试打印该对象 (System.out.println(obj.toString()
),逻辑上我也会得到一个 NullPointer。当我点击错误时,它没有选择 if 语句对应的行,而是选择了我的 System.out 语句,表明错误源是我的对象(另外,我很清楚对象是否 return s 在我的数据库中为 null,在我的例子中,“null”关键字出现在我的语句中“string”的位置。
考虑到我确实知道我的 obj 为空(即使通过检查它在我的数据库中为空),不可能将它与另一个对象进行比较,因为显然 if 语句是当其中之一为空时无法比较对象.
我通过检查以下代码(如上所述)知道:
Object obj;
if (obj.toString.equals(null))
{ //do something }
该语句 return 不应该是真的吗? 因为它没有执行 if 块中的内容。
主要是,编译器读到if (obj.toString.equals("string"))
的时候,因为是false(因为obj不等于" string") 应该落入我的 else 块,但那没有发生。
Any thoughts?
例如,当我说我单击错误并将我带到 if 语句行(或我的 System.out 行,用于对象验证)时,这就是我的意思:
您需要明确检查文字值 null
。在下面的示例中,如果非空检查失败,则不会执行 运行 &&
之后的语句;第一个检查短路表达式的其余部分
Object obj;
if (obj != null && obj.toString().equals("string")) {
//do something
}
else {
//do another something
}
注:
null
是一个字面值(类似于true和false)。所以你不应该像String
. 那样比较它