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.