未检测到空值。绕过if条件java

未检测到空值。绕过if条件java,java,Java,如图所示,expiryTime打印为null,如控制台中所示。然而,它绕过了if条件,我甚至打印了(expiryTime==null)和(expiryTime==null)。然而,它给我的是虚假的。为什么可能这样做?试试这个: if(expiryTime == null || expiryTime.isEmpty() || expiryTime.equals("null")) { /* do your stuffs here */ } 如果与“null”进行比较,则您的,而不是null。它不

如图所示,expiryTime打印为null,如控制台中所示。然而,它绕过了if条件,我甚至打印了(expiryTime==null)和(expiryTime==null)。然而,它给我的是虚假的。为什么可能这样做?

试试这个:

 if(expiryTime == null || expiryTime.isEmpty() || expiryTime.equals("null")) { /* do your stuffs here */ }

如果与“null”进行比较,则您的
,而不是
null
。它不是询问expiryTime是否为null,而是询问它是否是一个与字符串常量相同的字符串实例
“null”
。请在尝试询问更多问题之前阅读。一个好的问题没有模糊的不可读的代码图片和错误消息/堆栈跟踪,它有实际的文本。不要使用
=
操作符比较字符串,使用
String.equals(String anotherString)
String.equalsIgnoreCase(String anotherString)
instead@yshavit它实际上是在比较两者,但是对字符串
“null”
的比较是使用
=
,而不是
equals()
。Andreas向您指出了另一个描述您的问题的SO问题(您使用
=
比较字符串的事实)和修复方法(改为使用
.equals
方法)。这还不够吗?这不是一个代码编写服务,我们来这里是为了提供帮助,但不是充当一个黑匣子,在这个黑匣子中,坏代码进入,固定代码出来。“do stuff”块永远不能执行,因为非null会导致第一次测试失败,null会导致NPE。另外,问题中没有关于检查空字符串的内容。@Desmond-试试这段代码。它会起作用的。@Andreas-我添加了empty,因为作者似乎对null和string方法感到困惑。