Nie wszystkie obiekty można porównać, ale wszystkie obiekty można sprawdzić pod kątem równości. Jeśli nic więcej, można sprawdzić, czy dwa obiekty istnieją w tym samym miejscu w pamięci (równość odniesienia).
Co to znaczy compareTo()na dwóch Threadobiektach? W jaki sposób jeden wątek jest „większy niż” inny? Jak porównać dwa ArrayList<T>s?
ObjectUmowa ma zastosowanie do wszystkich klas Java. Jeśli nawet jednej klasy nie można porównać do innych instancji własnej klasy, Objectnie może wymagać, aby była częścią interfejsu.
Joshua Bloch używa słów kluczowych „porządek naturalny”, wyjaśniając, dlaczego klasa może chcieć zaimplementować Comparable. Nie każda klasa ma naturalne uporządkowanie, jak wspomniałem w moich przykładach powyżej, więc nie każda klasa powinna implementować Comparableani nie powinna Objectmieć tej compareTometody.
... compareTometoda nie jest zadeklarowana w Object. ... Jest on podobny w charakterze do Object„s equalsmetody, oprócz tego, że pozwala na porównanie rzędu oprócz prostych porównań równości i jest rodzajowy. Poprzez implementację Comparableklasa wskazuje, że jej instancje mają naturalną kolejność .
Effective Java, Second Edition : Joshua Bloch. Punkt 12, strona 62. Elipsy usuwają odniesienia do innych rozdziałów i przykładów kodu.
W przypadkach, gdzie nie chcą narzucić kolejność na niebędącego Comparableklasy, które nie mają naturalną kolejność, zawsze można dostarczyć Comparatorinstancji to rodzaj pomocy.