Ben*_*ler 45 java equality equals
我知道最好equals使用==运算符调用该方法(请参阅此问题).我希望两个字符串比较相等,如果它们都是null或者它们代表相同的字符串.不幸的是,如果字符串是equals,NPE则该方法将抛出null.我的代码目前是:
boolean equals(String s1, String s2) {
  if (s1 == null && s2 == null) {
    return true;
  }
  if (s1 == null || s2 == null) {
    return false;
  }
  return s1.equals(s2);
}
这是不优雅的.执行此测试的正确方法是什么?
fge*_*fge 80
如果是Java 7+,请使用Objects.equals(); 其文档明确指定:
[...]如果两个参数都为null,则返回true,如果只有一个参数为null,则返回false.否则,通过使用第一个参数的equals方法确定相等性.
这就是你想要的.
如果不这样做,您的方法可以重写为:
return s1 == null ? s2 == null : s1.equals(s2);
这工作,因为该.equals()合同保证任何对象o,o.equals(null)永远是假的.
Ale*_*you 44
return (a == b) || (a != null && a.equals(b));
非常简单,自我解释和优雅.
| 归档时间: | 
 | 
| 查看次数: | 9582 次 | 
| 最近记录: |