Solo reemplaza equals()
si tiene sentido. Pero, obviamente, si sobrescribe equals()
, debe asegurarse de que el contrato hashcode()
no esté roto, lo que significa que si dos objetos son iguales deben tener el mismo código hash.
¿Cuándo tiene sentido? Cuando Object.equals()
es insuficiente. Ese método se reduce básicamente a la identidad de referencia, lo que significa dos objetos son el mismo objeto para:
Los números son un ejemplo obvio cuando tiene sentido porque Integer(10)
debe ser igual a otra Intger(10)
.
Otro ejemplo podría ser cuando está representando registros de la base de datos. Supongamos que tiene registros de Estudiante con una ID entera única, entonces podría ser una implementación suficiente de iguales para simplemente comparar los campos de ID.