【发布时间】:2015-10-28 07:13:10
【问题描述】:
替换以下内容是否会丢失任何东西:
public final boolean testEquals(String left, String right) {
if ((left == null && right != null) || (left != null && right == null)) {
return false;
} else if (left == null && right == null) {
return true;
} else {
return left.equalsIgnoreCase(right);
}
}
来自 JDK 7 Objects class:
public final boolean testEquals(String left, String right) {
return Objects.equals(left,right);
}
如果我失去了不区分大小写,则将其替换为
Objects.equals(left.toLowerCase(),right.toLowerCase());
够了吗?有意义吗?
【问题讨论】:
-
较新的方式肯定清晰很多。
-
在第一种情况下,处理 null 情况,但在第三种情况下,
left.toLowerCase()或right.toLowerCase()可能会引发NullPointerException。 -
@Kayaman 更清楚,因为缺少
null检查。最后它会类似于第一种方法。 -
@BackSlash 你说得对,我错过了 equalsIgnoreCase。
-
我认为
testEquals相当于return left == null ? right == null : left.equalsIgnoreCase(right)。