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 Thread
objetos? ¿Cómo es un hilo "mayor que" otro? ¿Cómo se comparan dos ArrayList<T>
s?
El Object
contrato se aplica a todas las clases de Java. Si incluso una clase no puede compararse con otras instancias de su propia clase, entonces Object
no 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 Comparable
ni deberían Object
tener el compareTo
método.
... el compareTo
método no está declarado en Object
. ... Es similar en carácter a Object
's equals
mé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- Comparable
clase que no tiene un orden natural, siempre se puede suministrar una Comparator
instancia para ayudar a resolver la misma.