Método estándar
disponible en todos los objetos.
Devuelve un número
entero propio que caracteriza el objeto.
El método base
proporcionado en java.lang.Object es heredado por todos los objetos,
devolviendo un valor único, exclusivo e inmutable para cada objeto creado.
Las clases
creadas por el programador pueden devolver otro valor con la única condición de
que
·
si
dos objetos A y B son iguales según el método “equals()”,
entonces ambos deben devolver el mismo hashCode
a.equals(b) => a.hashCode() ==
b.hashCode()
es decir, que el
valor “hash” de un objeto no tiene porque ser ni único, ni exclusivo, ni
inmutable.
El valor “hash”
sirve para discriminar rápidamente si dos objetos son diferentes antes de
llamar a equals():
if (a.hashCode() == b.hashCode()
&& a.equals(b))
Regla: si
redefine equals(), debe redefinir hashCode().
Ver "equals()".
Temas relacionados
Vademécum
Patrón básico
Patrón: objetos iguales si son iguales algunos campos
Ejemplo de otros tipos de equivalencia
Si hashCode() está mal hecho …