タイトルを書き留めた後、この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アプローチを使用します。どちらのスタイルを選びますか、それとも欠陥を見つけますか?