Sobes.tech
Junior — Middle

Como é que o método equals é implementado em Java e como é que é utilizado para comparar objetos?

sobes.tech IA

Resposta da IA

Em Java, o método equals() está definido na classe Object e serve para comparar objetos quanto à igualdade lógica. Por padrão, ele compara referências (ou seja, verifica se duas variáveis apontam para o mesmo objeto).

Para uma comparação correta do conteúdo dos objetos, as classes geralmente redefinem o método equals(), para comparar os campos significativos dos objetos.

Exemplo de redefinição de equals():

@Override
public boolean equals(Object obj) {
    if (this == obj) return true; // verificação de identidade
    if (obj == null || getClass() != obj.getClass()) return false;
    MyClass other = (MyClass) obj;
    return Objects.equals(field1, other.field1) && field2 == other.field2;
}

É importante que ao redefinir equals(), também se redefina hashCode(), para garantir o funcionamento correto dos objetos em coleções, por exemplo, em HashMap.

Uso:

MyClass a = new MyClass(...);
MyClass b = new MyClass(...);
if (a.equals(b)) {
    // os objetos são considerados iguais em conteúdo
}