Junior — Middle
Em que condições os métodos equals e hashCode devem corresponder em Java?
sobes.tech IA
Resposta da IA
Em Java, os métodos equals() e hashCode() devem estar coordenados de acordo com as seguintes regras:
- Se dois objetos são iguais segundo equals(), então o seu hashCode() deve devolver o mesmo valor.
- Se dois objetos têm o mesmo hashCode(), isso não significa necessariamente que sejam iguais segundo equals(), mas para o desempenho de estruturas de hash, é desejável minimizá-lo.
- O método equals() deve ser reflexivo, simétrico, transitivo, consistente e não deve ser null.
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(field, other.field);
}
@Override
public int hashCode() {
return Objects.hash(field);
}