java:通过组合处理Null检查

时间:2012-01-23 11:58:55

标签: java

我可以使用下面这段代码

处理String的空值检查
 if (acct != null && !acct.isEmpty()|| !acct.equals(""))

我的意思是上面的代码是,如果

  1. Accountid不等于null和
  2. Accountid长度大于0 (这两个是检查的组合)
    1. Accountid不等于“”
    2. 我的代码是否满足上面提到的这些组合,还是我需要添加任何括号?满足上面提到的组合(第1和第2)??

      谢谢

3 个答案:

答案 0 :(得分:3)

是的,并且始终在或之前评估,即您的代码与

相同
if ((acct != null && !acct.isEmpty()) || !acct.equals(""))

然而,从逻辑上讲,这对我来说没有意义。你真的需要最后一部分吗?在这个特定的例子中,“acct.isEmpty()”是不是与“acct.equals(”“))”相同?

答案 1 :(得分:2)

isEmpty().equals("")完全相同。如果acct为空,那么您的测试将抛出NullPointerException。

我不明白你想要做哪个测试,但这个测试是错误的。再想一想,并实施单元测试来测试所有情况:

  • null string,
  • 空字符串,
  • 不是空字符串。

答案 2 :(得分:1)

根据你提出的问题,它应该有如下括号

if ((acct != null && !acct.isEmpty()) || !("".equals(acct) )) 

在||之后运算符,代码被更改,当acct为NULL时,将避免面临NullPointerException。

这个SO答案解释了更多关于使用“”.equals()的信息。

https://stackoverflow.com/a/3321548/713414