não é bem esse o ponto,
mas sobre o que vc colocu, é inviável, isso traz 1 problema de dimensões catastroficas, quase todos os frameworks utilizam collections, e collection não funcionam sem a correta implementação de equals e hashCode...
implementar corretamente um equals para uma entidade é muito facil, desde que vc ignore o 4° mandamento, em que fala que todos as informações para o teste de equals são imutaveis...
quase todo bean inicia em branco, e tem seus dados carregados, ou iniciam com os principais dados preenchidos e é persistido, e tem seu ID preenchido...
.......
segundo a regra do equals, isso torania impossivel implementar o equals, porem é facil de entender, que 2 obejtos entidades são iguais, sempre que seus IDs são iguais...
........
Esse é o unico ponto, e acho totalmente inviável não implementar equals, e tb hashCode (para otimizar a manipulação de collections)...
.......
A duvida é essa, será que essa 4° regra, onde diz que o estado de igualdade do objeto é imutavel ?? esse reciocinio é facil de compreender e de implementar para VOs (Values Objects) porem, para outros objetos é algo dificil...
é realmente um erro ? ignorar essa regra ??
normalmente eu gosto da seguinte abordagem,
public class Pessoa {
private Integer id;
private String nome;
private String cpf;
public boolean equals(Object o) {
if (!(o instanceof Pessoa))
return false;
if (id != null)
return id.equals(other.id);
if (cpf != null)
return cpf.equals(other.cpf);
return false;
}
public int hashCode() {
int hash = 5;
hash = hash*57 + id != null ? id.hashCode() : hashCodeIdNull();
}
public int hashCodeIdNull() {
return cpf != null ? cpf.hashCode() : 0;
}
}
em resumo do equals...
- caso haja ID, o teste seria por ID...
- caso não haja ID e haja CPF, o teste seria por CPF...
- caso contrario os objetos não podem ser iguais, pois nem há como testar.
e se vc olhar, essa é a forma mais logica de testar 2 pessoas, com esses atributos... e o hashCode tb é conforme, se houver ID hashCode por id, se não houver hashCode por CPF...
porem se eu persistir o objeto, ele praticamente se transforma em outro, ganha um ID... agora como se manter conforme com a 4° lei do equals ??
se manter na lei de constancia do hashCode é facil, so vai perder um pouco de performance no caso de não haver id....