Sobes.tech
Junior — Middle

É possível usar o método equals sem o redefinir previamente na classe?

sobes.tech IA

Resposta da IA

Sim, o método equals pode ser utilizado sem ser redefinido, pois é herdado da classe Object. No entanto, neste caso, o comportamento do método será padrão: comparação de referências de objetos (ou seja, verificar se duas variáveis apontam para o mesmo objeto na memória).

Se for necessário comparar objetos pelo conteúdo (por exemplo, pelos valores dos campos), então o método equals deve ser redefinido na classe. Sem redefinição, a comparação não funcionará como esperado para objetos logicamente iguais.

Exemplo:

class Person {
    String name;
    Person(String name) { this.name = name; }
}

Person p1 = new Person("Alice");
Person p2 = new Person("Alice");

System.out.println(p1.equals(p2)); // false, se `equals` não for redefinido

Para que a comparação pelo conteúdo funcione, é necessário redefinir equals e hashCode.