我在写出标题后阅读了这篇 SO帖子,但仍然决定解决关于 Java 中 equals 的防错实现的问题。这是我的正常实现
@Override
public boolean equals(Object o){
if(o == null) return false;
if(o instanceof CompositePk == false) return false;
if(this == o) return true;
CompositePk that = (CompositePk)o;
return new EqualsBuilder().append(this.id, that.id)
.append(this.bucketId, that.bucketId)
.isEquals();
}
使用 Apache 的 EqualsBuilder 来完成日常工作。比这更容易的是我的 Netbean 自动生成的equals(o)
实现
@Override
public boolean equals(Object obj){
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final TemplatesWrapper other = (TemplatesWrapper) obj;
if (this.timeAdded != other.timeAdded && (this.timeAdded == null || !this.timeAdded.equals(other.timeAdded))) {
return false;
}
return true;
}
我从 2 个 diff 项目中获取这些,但他们都试图完成相同的事情,但使用的是 diff 方法。你更喜欢哪种风格,或者你发现了什么缺陷?