在每个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;
}
Run Code Online (Sandbox Code Playgroud)
这是每次都没有任何好处只是为了避免NullPointerExceptions.
打电话不是更好
boolean doesIt = SomeClass.equals( member1, other.member1);
Run Code Online (Sandbox Code Playgroud)
此方法将检查两者是否为null,如果不是,则在member1上调用默认值为equals.
这意味着我的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);
}
Run Code Online (Sandbox Code Playgroud)
我的眼睛更清晰,更不容易出错.
当然,我自己编写这个类/方法绝对没有问题,但我想知道是否有可能已经提供equals(Object,Object)的类.
| 归档时间: |
|
| 查看次数: |
1833 次 |
| 最近记录: |