Junior — Middle
Quando e por que motivo deve-se sobrescrever o método hashCode numa classe?
sobes.tech IA
Resposta da IA
O método hashCode deve ser sobrescrito na classe se você sobrescrever o método equals. Isso é necessário para cumprir o contrato entre esses métodos: se dois objetos são iguais segundo equals, seus códigos de hash devem ser iguais. Caso contrário, os objetos podem funcionar incorretamente em coleções baseadas em hash, como HashMap ou HashSet.
Exemplo:
@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);
}
Sem sobrescrever hashCode, objetos iguais segundo equals podem ter códigos de hash diferentes, o que causará erros ao usá-los em estruturas de dados baseadas em hash.