Вот некоторые проблемы:
if (getID() == null) {
return -1;
}
Вышеупомянутое нарушает договор, если f.getID()
также null
.Кроме того, если f.getID()
равно null
и this.getUID()
НЕ null
, то вам следует вернуть +1 в этой точке
if (getID().equals(RuntimeHelper.emptyUUIDString)) {
return -1;
}
Подобные недостатки в предыдущем случае.
if (getCODE() == null || getCODE().isEmpty()) {
return -1;
} else if (f.getCODE() == null || f.getCODE().isEmpty()) {
return 1;
}
Подобные недостатки в предыдущем случае ... когда оба кода являются нулевыми или пустыми.
Выше по-разному нарушают один или оба из этих инвариантов:
compare(a, a) == 0
для всех a != null
compare(a, b) == -1
<=> compare(b, a) == +1
для всех a != null
и b != null