Я ищу все стандартные классы Java, для которых compareTo()
может возвращать 0
, а equals()
возвращает false
:
Comparable comparable1 = ???;
Comparable comparable2 = ???;
assert comparable1.compareTo(comparable2) == 0;
assert !comparable1.equals(comparable2);
Я знаю только один: new BigDecimal("1.0")
равен new BigDecimal("1")
, используя compareTo()
, но не равный с помощью equals()
. Есть ли другие?
Меня интересуют все такие классы, но только из открытого Java API. Мне нужно, чтобы предоставить подробную документацию для AssertJ UnevenComparableAssert
.
EDIT:
Благодаря @ErikVesteraas мне удалось воспроизвести дополнительный пример:
Calendar calendar1 = new GregorianCalendar(0, 0, 0);
Calendar calendar2 = new GregorianCalendar(0, 0, 0);
calendar2.setLenient(false);
Comparable comparable1 = calendar1;
Comparable comparable2 = calendar2;
assert comparable1.compareTo(comparable2) == 0; // compareTo compares along the timeline
assert !comparable1.equals(comparable2); // equals compares state, leniency is different