私は一連のコードの QA を行っている最中で、開発者が Comparable を実装する DTO を持っている例をいくつか見つけました。この DTO には、7 つまたは 8 つのフィールドがあります。compareTo メソッドは、1 つのフィールドだけに実装されています。
private DateMidnight field1; //from Joda date/time library
public int compareTo(SomeObject o) {
if (o == null) {
return -1;
}
return field1.compareTo(o.getField1());
}
同様に、equals メソッドはオーバーライドされ、基本的には次のようになります。
return field1.equals(o.getField1());
最後に、ハッシュコード メソッドの実装は次のとおりです。
return field1.hashCode;
field1
null になることはなく、これらのオブジェクト全体で一意になります (つまり、同じ を持つ 2 つのオブジェクトを取得するべきではありませんfield1
)。
実装が一貫しているのは良いことですが、フィールドが 1 つしか使用されていないことに注意する必要がありますか? これは異常ですか?問題を引き起こしたり、他の開発者を混乱させたりする可能性はありますか? これらのオブジェクトのリストが渡され、別の開発者が何らかのマップまたはセットを使用して、これらのオブジェクトから異常な動作を取得するシナリオを考えています。どんな考えでも大歓迎です。ありがとう!