metodo implementar example como java eclipse

java - implementar - ¿Es posible hacer que eclipse genere hashCode y se iguala con HashCodeBuilder e EqualsBuilder?



object hashcode java (6)

Puede hacerlo con Plantillas de código en Eclipse.

Aquí hay una solución que encontré con ejemplos de HashCodeBuilder y EqualsBuilder.

Plantilla EqualsBuilder:

public boolean equals(Object o) { boolean result = false; if (this == o) { result = true; } else if (o instanceof $CLASSNAME$) { $CLASSNAME$ other = ($CLASSNAME$) o; result = new org.apache.commons.lang.builder.EqualsBuilder() .append($END$ .isEquals(); } return result; }

Plantilla HashCodeBuilder:

public int hashCode() { return new org.apache.commons.lang.builder.HashCodeBuilder() .append( $END$ ) .toHashCode(); }

El hashCode generado por defecto y las implementaciones equivalentes son feas en el mejor de los casos.

¿Es posible hacer que eclipse genere desde HashCodeBuilder y EqualsBuilder, y quizás incluso un toString con ToStringBuilder?


Uso el plugin de Eclipse llamado "Commonclipse"

Después de la instalación, verá un nuevo elemento del menú contextual "commonclipse" cuando haga clic derecho dentro de un archivo fuente java. Puede generar métodos equals, hashcode, toString y compareTo basados ​​en las bibliotecas de Apache commons.

Para instalarlo, use esto desde dentro de la actualización de eclipse: http://commonclipse.sourceforge.net


Eche un vistazo a Commons4E

No se ha actualizado en un tiempo, pero entonces no creo que deba cambiar mucho?

Actualización: acaba de verificar contra 3.4.1 y funciona bien.


Plantillas de código de Eclipse para eclipse 3.5.0, derivadas de las plantillas de Bruno Conde:

@Override public boolean equals(Object obj) { if (obj == null) { return false; } else if (obj == this) { return true; } else if (obj.getClass() != this.getClass()) { return false; } ${enclosing_type} other = (${enclosing_type}) obj; return new EqualsBuilder()// .appendSuper(super.equals(other))// .append(${cursor})// .isEquals(); }

y

@Override public int hashCode() { return new HashCodeBuilder(${cursor})// .append()// .toHashCode(); }



Hice esta plantilla revisando varias respuestas, sitios web y probándola en Eclipse Luna. Vaya a Windows-> Preferencias y luego a Java-> Editor-> Plantillas y agréguela allí.

${:import(org.apache.commons.lang3.builder.HashCodeBuilder, org.apache.commons.lang3.builder.EqualsBuilder)} @Override public int hashCode() { HashCodeBuilder hashCodeBuilder = new HashCodeBuilder(); hashCodeBuilder.append(${field1:field}); hashCodeBuilder.append(${field2:field}); hashCodeBuilder.append(${field3:field}); hashCodeBuilder.append(${field4:field}); hashCodeBuilder.append(${field5:field}); return hashCodeBuilder.toHashCode(); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } ${enclosing_type} rhs = (${enclosing_type}) obj; EqualsBuilder equalsBuilder = new EqualsBuilder(); equalsBuilder.append(${field1}, rhs.${field1}); equalsBuilder.append(${field2}, rhs.${field2}); equalsBuilder.append(${field3}, rhs.${field3}); equalsBuilder.append(${field4}, rhs.${field4}); equalsBuilder.append(${field5}, rhs.${field5});${cursor} return equalsBuilder.isEquals(); }