Предположим, есть 3 объекта типа Item
, таких как:для a
: предположим, getDate() == null
для b
: предположим, getDate() != null
Таким образом, результат операторапредположим, что if (lhs.getHour() < rhs.getHour())
равно true
, тогда a < b
такжедля b
: предположим, getDate() != null
для c
: предположим, getDate() != null
Таким образом, результат операторапредположим, что if (lhs.getDate().getTime() < rhs.getDate().getTime())
равно true
, тогда b < c
такжедля a
: предположим, getDate() == null
для c
: предположим, getDate() != null
Таким образом, результат операторапредположим, что if (lhs.getHour() > rhs.getHour())
равно true
, затем a > c
(из-за финала return 1
)
Как видите, есть противоречие:a < b
и b < c
, но a > c
Я считаю, что подобные случаи нарушают общий контракт метода сравнения.