Sobes.tech
Junior — Middle

Em que situações deve-se sobrescrever o método equals em Java para uma comparação correta de objetos?

sobes.tech IA

Resposta da IA

O método equals em Java deve ser sobrescrito quando desejar definir critérios próprios de igualdade de objetos da sua classe, diferentes da comparação padrão por referência (que é implementada em Object).

Isso é especialmente importante se os objetos da sua classe são considerados iguais logicamente quando certos campos coincidem, por exemplo, na classe Person, objetos são considerados iguais se o nome e a data de nascimento coincidirem.

Sobrescrever equals é necessário para:

  • Comparar objetos corretamente pelo conteúdo.
  • Garantir o funcionamento adequado de coleções como HashSet ou HashMap, que usam equals para determinar a unicidade dos elementos.

Ao sobrescrever equals, também é importante sobrescrever hashCode para cumprir o contrato entre esses métodos.

Exemplo de sobrescrita de equals e hashCode:

@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    Person person = (Person) obj;
    return Objects.equals(name, person.name) && Objects.equals(birthDate, person.birthDate);
}

@Override
public int hashCode() {
    return Objects.hash(name, birthDate);
}