【发布时间】:2021-10-14 04:12:51
【问题描述】:
我的代码中有一个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"))
我不明白这里出了什么问题。该值为空,但检查失败并且它在我的If 条件内。如果我尝试转换为toString(),那么它会说该值为空。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
听起来你
myField是某种对象,其toString()方法返回 null。这就是“toString() 的返回值为 null”告诉你的。您应该修复toString()方法,使其不会返回 null。 -
myField.toString()返回什么?你可能对null也有误解。null不等于"null"(字符串)。 -
@khelwood 非常感谢您的回答。它实际上是枚举,它被分配了
null,所以它失败了。非常感谢它的解释。
标签: java string if-statement null tostring