toString/equals/hashCode na mão?! tsc, tsc, tsc
Quem nunca precisou sobrescrever os métodos toString(), equals() e hashCode() em suas classes de domínio?!
Uma forma simples de fazer isso é utilizar o componente Lang do projeto Apache Commons, esse camarada possui algumas classes que fazem o trabalho árduo pra você.
Veja a dificuldade de fazer isso:
public abstract class Entidade implements Serializable {
/**
* Retorna o valor de id.
*
* @return o valor de id.
*/
public abstract Id getId();
/**
* @see java.lang.Object#hashCode()
*/
public int hashCode() {
// Para quem utiliza Hibernate este forma de uso do HashCodeBuilder
// não é recomendada devido a problemas de "lazy initialization" de coleções.
// return HashCodeBuilder.reflectionHashCode(this);
return new HashCodeBuilder(17, 31).append(getId())
.append(super.hashCode()).toHashCode();
}
/**
* @see java.lang.Object#equals(java.lang.Object)
*/
public boolean equals(Object other) {
return EqualsBuilder.reflectionEquals(this, other);
}
/**
* @see java.lang.Object#toString()
*/
public String toString() {
return ToStringBuilder.reflectionToString(this,
ToStringStyle.MULTI_LINE_STYLE);
}
}
Simples assim!
CategoriasBoas Práticas, Java

Realmente fazer tudo no braço é complicado, esse método é mais simples, com ele ta na mão…