我必须将两个Boolean
包装器相互比较。结果我想知道他们是否平等。
这就是我提出的:
public static boolean areEqual(final Boolean a, final Boolean b) {
if (a == b) {
return true;
}
if (a != null && b != null) {
return a.booleanValue() == b.booleanValue();
}
return false;
}
是否有更好和/或更短的方法来正确比较两个Boolean
包装器的相等性?
首先,我想使用Object.equals()
或Boolean.compareTo()
,但这两种方式最终都可以使用NullPointerException
,对吧?
也许有些东西我在这里看不到,这就是我要问的原因。
答案 0 :(得分:7)
您可以获得最短的安全性(对于实现equals()
的任何其他对象自然有效):
java.util.Objects.equals(a, b);
答案 1 :(得分:1)
您无需重新发明轮子。
如果您使用的是Java 7或更高版本,请使用java.util.Objects
类(如Kayaman所述)。
如果您使用的是早期版本的java,请使用Apache BooleanUtils类。 尝试谷歌搜索“apache booleanutils”以了解如何获得它。
编辑:更正了java版本。
答案 2 :(得分:-2)
这对我有用。
public class MyClass {
public static void main(String args[]) {
Boolean x=true;
Boolean y=true;
System.out.println(compare(x,y)); // true
x=false;
y=true;
System.out.println(compare(x,y)); // false
x=true;
y=false;
System.out.println(compare(x,y)); // false
x=false;
y=false;
System.out.println(compare(x,y)); // true
x=null;
y=null;
System.out.println(compare(x,y)); // true
}
public static boolean compare(final Boolean a, final Boolean b) {
if (a == null || b == null) {
return a == b;
}
return a.equals(b);
}
}
使用https://www.jdoodle.com/online-java-compiler进行探测
编辑:为空值添加例外。