Java Null 检查失败,代码继续执行 if 语句
Java Null check fails and code proceeds to if statement
我的代码中有一个 if
条件,如果变量的值为 Null
,我不希望我的代码继续进入 if 条件,但由于某种原因,条件通过并继续下一部分,但该字段的值为 NULL
.
我不确定为什么会出现此问题。类似的方法适用于其他字段但不适用于此字段:
if (myField != null) {
System.out.println("WITHIN IF : " + myField);
//prints null
}
我做了一些研究,尝试了一些事情,例如:
if(!Objects.isNull(myField))
在以下情况下,条件失败表示 java.lang.NullPointerException: Cannot invoke "String.equalsIgnoreCase(String)" because the return value of toString() is null
if(myField != null && myField.toString().equals("null"))
if(myField != null && myField.toString().equalsIgnoreCase("null"))
我不明白这里出了什么问题。该值为 null 但检查失败并且符合我的 If
条件。如果我尝试转换为 toString()
那么它会失败,说该值为空。
有人可以帮我解决这个问题吗?
当 java 计算 "WITHIN IF : " + myField
表达式的值时,它调用 myField
对象上的 toString
方法。
它可以 return 字符串 "null"
或者它可以 return 实际 null
引用。在这两种情况下,您都会得到 "WITHIN IF : null"
作为结果。
PS: 你手头有第二个案子。
我的代码中有一个 if
条件,如果变量的值为 Null
,我不希望我的代码继续进入 if 条件,但由于某种原因,条件通过并继续下一部分,但该字段的值为 NULL
.
我不确定为什么会出现此问题。类似的方法适用于其他字段但不适用于此字段:
if (myField != null) {
System.out.println("WITHIN IF : " + myField);
//prints null
}
我做了一些研究,尝试了一些事情,例如:
if(!Objects.isNull(myField))
在以下情况下,条件失败表示 java.lang.NullPointerException: Cannot invoke "String.equalsIgnoreCase(String)" because the return value of toString() is null
if(myField != null && myField.toString().equals("null"))
if(myField != null && myField.toString().equalsIgnoreCase("null"))
我不明白这里出了什么问题。该值为 null 但检查失败并且符合我的 If
条件。如果我尝试转换为 toString()
那么它会失败,说该值为空。
有人可以帮我解决这个问题吗?
当 java 计算 "WITHIN IF : " + myField
表达式的值时,它调用 myField
对象上的 toString
方法。
它可以 return 字符串 "null"
或者它可以 return 实际 null
引用。在这两种情况下,您都会得到 "WITHIN IF : null"
作为结果。
PS: 你手头有第二个案子。