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;
}
}