在每个equals方法中,我需要为每个(相关)属性编写一个这样的块:
@Override
public boolean equals(Object obj) {
...
if (member1 == null) {
if (other.member1 != null) {
return false;
}
} else if (!member1.equals(other.member1)) {
return false;
}
...
return true;
}
这是每次都没有任何好处,只是为了避免NullPointerExceptions。
打电话
会不会好得多boolean doesIt = SomeClass.equals( member1, other.member1);
此方法将检查两者是否为空,如果不是,则在member1上调用默认值等于。
这意味着我的equals方法最终可能会像这样
@Override
public boolean equals(Object obj) {
return obj != null
&& getClass() == obj.getClass()
&& SomeClass.equals(member1, (((XX) other).member1)
&& SomeClass.equals(member2, (((XX) other).member2)
&& SomeClass.equals(member3, (((XX) other).member3)
&& SomeClass.equals(member4, (((XX) other).member4);
}
我的眼睛更清晰,更不易出错。
当然,我自己编写这个类/方法绝对没有问题,但我想知道是否有一个提供equals(Object,Object)的类。