Nem todos os objetos podem ser comparados, mas todos os objetos podem ser verificados quanto à igualdade. Se nada mais, é possível ver se existem dois objetos no mesmo local na memória (igualdade de referência).
O que isso significa compareTo()em dois Threadobjetos? Como um segmento é "maior que" outro? Como você compara dois ArrayList<T>s?
O Objectcontrato se aplica a todas as classes Java. Se nem uma classe puder ser comparada a outras instâncias de sua própria classe, Objectnão será possível exigir que ela faça parte da interface.
Joshua Bloch usa as palavras-chave "ordenação natural" ao explicar por que uma classe pode querer implementar Comparable. Nem toda classe tem uma ordem natural, como mencionei nos meus exemplos acima, portanto nem toda classe deve implementar Comparablenem deve Objectter o compareTométodo.
... o compareTométodo não está declarado em Object. ... É de caráter semelhante ao método de Objects equals, exceto pelo fato de permitir comparações de ordem, além de comparações simples de igualdade, e é genérico. Ao implementar Comparable, uma classe indica que suas instâncias têm uma ordem natural .
Java eficaz, segunda edição : Joshua Bloch. Item 12, Página 62. As elipses removem referências a outros capítulos e exemplos de código.
Para os casos onde não querem impor uma ordenação em um não- Comparableclasse que não tem uma ordem natural, você sempre pode fornecer uma Comparatorinstância para ajudar a resolver isso.