Во-первых, интерфейс Comparable
является общим; ваши объявления должны указывать параметр типа:
public class PrivateComparableClass
implements Comparable<PrivateComparableClass> {
Затем вы должны сравнить thing
членов класса в методе compareTo()
(который является методом экземпляра, а не членом класса).
@Override
public final int compareTo(PrivateComparableClass that) {
return this.thing.compareTo(that.thing);
}
Хорошо себя ведущий Comparable
должен реализовать метод equals()
, который согласуется с его compareTo()
методом:
@Override
public final boolean equals(Object obj) {
if (obj == this)
return true;
if (!(obj instanceof PrivateComparableClass))
return false;
return compareTo((PrivateComparableClass) obj) == 0;
}
И, когда вы переопределяете equals()
, вам также нужно переопределить hashCode()
:
@Override
public final int hashCode() {
return thing.hashCode();
}
Если thing
действительно разрешено равным null
, подходящее поведение проверки на ноль должно быть добавлено к каждому методу.