java.lang.Comparable
but do not override equals()
.
If equals()
is not overridden, the equals()
implementation is not consistent with
the compareTo()
implementation. If an object of such a class is added
to a collection such as java.util.SortedSet
, this collection will violate
the contract of java.util.Set
, which is defined in terms of
equals()
.
Example:
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;
}
}
After the quick fix is applied:
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;
}
}