szukam wszystkich standardowych klas Javy dla których compareTo()
mogą powrócić 0
podczas equals()
powraca false
:Czy istnieją standardowe klasy Java z niespójnymi metodami compareTo() i equals()?
Comparable comparable1 = ???;
Comparable comparable2 = ???;
assert comparable1.compareTo(comparable2) == 0;
assert !comparable1.equals(comparable2);
Wiem tylko jedno: new BigDecimal("1.0")
jest równa new BigDecimal("1")
użyciu compareTo()
ale nie równa użyciu equals()
. Czy są jeszcze jakieś inne?
Interesują mnie wszystkie takie klasy, ale tylko z publicznego interfejsu Java API. Potrzebuję go do dostarczenia dokładnej dokumentacji interfejsu AssertJ's UnevenComparableAssert
.
EDIT:
Dzięki @ErikVesteraas, udało mi się odtworzyć dodatkowy przykład:
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
Dobre pytanie, i o ile wiem przynajmniej, "BigDecimal" jest jedynym w JDK – fge
Co do pytania, które właśnie usunąłeś, jaki jest tutaj przypadek użycia? Czy potrzebujesz wyczerpującej listy? –
Pracuję nad AsssertJ i próbuję wymyślić jakiekolwiek inne przykłady oprócz "BigDecimal" do udokumentowania tej klasy: https://github.com/joel-costigliola/assertj-core/blob/master/src/main/java/ org/assertj/core/api/UnevenComparableAssert.java –