when example best and java eclipse hashcode eclipse-jdt

example - object equals java



¿Cómo personalizar hashCode() y equals() generados por Eclipse? (2)

Se recomienda y algunas veces es necesario que las clases que representan valores ( clases de valor ) sobrescriban los hashCode() , equals() [y opcionalmente toString() ]. Los valores que devuelven estos métodos dependen de todas o de un subconjunto de las variables miembro de la clase y su superclase. Para implementarlos correctamente, debe saber un poco de teoría sobre hash y un poco de álgebra y teoría de conjuntos (no demasiado, y casi todo está explicado en javadocs para estos métodos y en la forma de Java efectiva Josh Bloch).
En la mayoría de los casos, la implementación de estos métodos sigue una plantilla, y los IDE (como Eclipse JDT) incluyen herramientas para generarlos. Sin embargo, los generadores de herramientas no pueden hacer suposiciones y generar estos métodos utilizando solo las construcciones disponibles en el lenguaje y la biblioteca estándar. Debido a eso, estos métodos generalmente se ven muy feos.

Otra forma de implementar estos métodos es usar la biblioteca como HashCodeBuilder , EqualsBuilder y ToStringBuilder Apache (commons-lang). Usando estas utilidades, uno puede implementar sus propios hashCode() y equals() que se ven mucho mejor.

Mi pregunta es sobre la combinación de estos dos enfoques. Me gustaría poder personalizar los hashCode() y equals() Eclipse, para que los genere usando HashCodeBuilder y amigos. ¿Es posible (y cómo) hacer esto sin ajustar el JDT? Solo se escribe un pequeño complemento que anulará las implementaciones predeterminadas (pero sin cambiar el código JDT).

Gracias.


En las preferencias de eclipse (Ventana> Preferencias) vaya a Java> Editor> Plantillas.

Allí puede crear un teplate con nombre: hashcode context: java description: Cree un método de hashcode. El patrón debe contener algo como esto:

public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); }

Guarda y vuelve a tu clase de java. Escriba el nombre (código hash) y presione ctrl enter. A continuación, puede seleccionar su plantilla de la lista desplegable.

Haz lo mismo para cada método que quieras. También puedes crear una plantilla que combine todo también.


Publicar mi comentario como respuesta a pedido: Commonclipse , un complemento de Eclipse que facilita el uso de Apache Commons, hace lo que quiere hacer.

Advertencia: no tengo experiencia reciente con este complemento, por lo que originalmente publiqué como un comentario, y no como una respuesta.