检查两个对象是否相等,即使它们可以为null

Use*_*er1 10 java null

有时候,我看到了这个:

if (a.equals(b)) do(something);
Run Code Online (Sandbox Code Playgroud)

但是,如果a为null,则抛出NullPointerException.假设何时a==null和/ b==null或如果a==b我想要do(something).在没有异常的情况下进行此检查的最简单方法是什么?

Pet*_*rey 24

另一种写作方式.

if (a == null ? b == null : a.equals(b))
Run Code Online (Sandbox Code Playgroud)

  • 比接受的答案更具可读性 (3认同)

McD*_*ell 22

if( a==b || (a!=null && a.equals(b)) )
Run Code Online (Sandbox Code Playgroud)

(a==b当两者都为空时处理大小写.)


还要注意Java 7及以上的Object.equals方法:

if(java.util.Object.equals(a, b))
Run Code Online (Sandbox Code Playgroud)

  • +1,这几乎是各种.equals()实用程序方法所做的.例如:http://commons.apache.org/lang/api/org/apache/commons/lang/ObjectUtils.html#equals%28java.lang.Object,%20java.lang.Object%29 (4认同)