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: 你手头有第二个案子。