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