Início > Boas Práticas, Java > toString/equals/hashCode na mão?! tsc, tsc, tsc

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
  1. GUSTAVO FLORES DE OLIVEIRA
    22/03/2011 às 10:11 pm | #1

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

  1. Nenhum trackbacks ainda.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.