java.lang.Comparable を実装しているものの、equals() をオーバーライドしていないクラスを報告します。
equals() がオーバーライドされていない場合、equals() の実装は compareTo() の実装と矛盾します。 このようなクラスのオブジェクトが java.util.SortedSet などのコレクションに追加された場合、このコレクションは equals() の項で定義されている java.util.Set の契約に違反します。
例:
class Length implements Comparable<Length> {
private int cm = 0;
@Override
public int compareTo(@NotNull Length o) {
if (cm == o.cm) return 0;
return cm < o.cm ? -1 : 1;
}
}
クイックフィックス適用後:
class Length implements Comparable<Length> {
private int cm = 0;
@Override
public int compareTo(@NotNull Length o) {
if (cm == o.cm) return 0;
return cm < o.cm ? -1 : 1;
}
@Override
public boolean equals(Object o) {
return o instanceof Length && compareTo((Length) o) == 0;
}
}