Java等于()排序

aeq*_*aeq 8 java string

如果我尝试.equals()在java中对空字符串执行操作,则会抛出空指针异常.我想知道,如果我想比较一个字符串是否等于某个常量字符串,我可以执行以下操作:

MY_CONSTANT_STRING.equals(aStringVariable)
Run Code Online (Sandbox Code Playgroud)

我知道它会起作用,但这只是非常糟糕的代码吗?

Mar*_*ers 21

这是一个标准的Java习语,开玩笑地称为Yoda条件.

我个人更喜欢明确地处理null情况,但是Yoda方式被大量使用,任何有经验的Java程序员都应该能够立即理解正在发生的事情.这很好用.


cam*_*ckr 6

这只是非常糟糕的代码吗?

不,这是许多人编写声明以避免NPE的方式.


Bil*_*ard 5

您所拥有的一切都很好。甚至可以使用String文字。

if( "value".equals(variable) ) {
    ...
Run Code Online (Sandbox Code Playgroud)

如果您不喜欢这样做,则始终可以显式检查null和是否相等,并将这两个检查与结合在一起&&。操作员的短路将确保您永远不会得到NPE。

if( (variable != null) && variable.equals("value") ) {
    ...
Run Code Online (Sandbox Code Playgroud)

  • 如果希望减少混乱,请在变量!= null周围加上括号是可选的。 (3认同)