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);
}