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,
[code]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;
}
}
[/code]
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…