Gostaria de saber a lógica de comparação que vocês usam no método equals.
Todos os meus objetos possuem um ID que é único, então estou pensando em comparar só por isso.
O que vocês acham?
public Boolean equals(Object b){
/*comparações de == e instanceOf*/
return this.id.equals(b.getId());
}
No livro de preparação para a certificação SCJP 6 da Kathy Sierra e do Bert Bates, eles dizem que o equals deve comparar o mínimo de atributos possível, para que se possa identificar se um objeto é igual ao outro.
Se somente pelo id você tem certeza de que pode dizer se um objeto é igual ao outro, então compare somente por ele mesmo.
[quote=Maiconfz]Gostaria de saber a lógica de comparação que vocês usam no método equals.
Todos os meus objetos possuem um ID que é único, então estou pensando em comparar só por isso.
O que vocês acham?
public Boolean equals(Object b){
/*comparações de == e instanceOf*/
return this.id.equals(b.getId());
}
[/quote]
Bom, eu geralmente faço assim. Mas isso porque eu (quase) sempre trabalho com listas.
No livro do effective java tem um exemplo de implementação de equals. E sempre que se implementar equals deve-se implementar hashcode também.
Segue um exemplo do livro.
@Override public boolean equals(Object o) {
if (o == this)
return true;
if (!(o instanceof PhoneNumber))
return false;
PhoneNumber pn = (PhoneNumber)o;
return pn.lineNumber == lineNumber
&& pn.prefix == prefix
&& pn.areaCode == areaCode;
}