Junior — Middle
¿Cuándo y por qué debería anularse el método hashCode en una clase?
sobes.tech AI
Respuesta de la IA
El método hashCode debe ser sobrescrito en la clase si sobrescribes el método equals. Esto es necesario para cumplir con el contrato entre estos métodos: si dos objetos son iguales según equals, sus códigos hash deben ser iguales. De lo contrario, los objetos pueden funcionar incorrectamente en colecciones basadas en hash, como HashMap o HashSet.
Ejemplo:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
MyClass other = (MyClass) obj;
return Objects.equals(field1, other.field1) && field2 == other.field2;
}
@Override
public int hashCode() {
return Objects.hash(field1, field2);
}
Sin sobrescribir hashCode, los objetos iguales según equals pueden tener diferentes códigos hash, lo que provocará errores al usarlos en estructuras de datos basadas en hash.