No se pueden comparar todos los objetos, pero se puede verificar la igualdad de todos los objetos. Por lo menos, uno puede ver si existen dos objetos en la misma ubicación en la memoria (igualdad de referencia).
¿Qué significa para compareTo()dos Threadobjetos? ¿Cómo es un hilo "mayor que" otro? ¿Cómo se comparan dos ArrayList<T>s?
El Objectcontrato se aplica a todas las clases de Java. Si incluso una clase no puede compararse con otras instancias de su propia clase, entonces Objectno puede requerir que sea parte de la interfaz.
Joshua Bloch usa las palabras clave "ordenamiento natural" cuando explica por qué una clase podría querer implementar Comparable. No todas las clases tienen un orden natural como mencioné en mis ejemplos anteriores, por lo que no todas las clases deberían implementar Comparableni deberían Objecttener el compareTométodo.
... el compareTométodo no está declarado en Object. ... Es similar en carácter a Object's equalsmétodo, excepto que permite comparaciones de orden, además de las comparaciones de igualdad simples, y es genérico. Al implementar Comparable, una clase indica que sus instancias tienen un orden natural .
Efectivo Java, segunda edición : Joshua Bloch. Elemento 12, página 62. Las elipses eliminan referencias a otros capítulos y ejemplos de código.
Para los casos en que no desea imponer un orden en un no- Comparableclase que no tiene un orden natural, siempre se puede suministrar una Comparatorinstancia para ayudar a resolver la misma.