Sobes.tech
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);
}