Consultor tecnológico de desarrollo de proyectos informáticos.
Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación
Somos expertos en Java/J2EE
Fecha de publicación del tutorial: 2012-10-03
Plantillas para los métodos equals y hashCode en Eclipse, usando la librería de Apache Commons Lang.
0. Índice de contenidos.
- 1. Introducción.
- 2. Entorno.
- 3. Creación de las plantillas.
- 4. Uso de las plantillas.
- 5. Conclusiones.
1. Introducción
Eclipse soporta, por si solo, la generación de códido para los métodos equals, hashCode y toString de una clase. Si, para el método toString, Eclipse permite la personalización del código que se genera, para los métodos equals y hashCode no.
Ya vimos la importancia de sobreescribirlos en nuestras clases de entidad y una recomendación para que el código de los mismos lo generásemos con el soporte de la librería Apache Commons Lang.
En este tutorial vamos a exponer cómo hacer uso de plantillas de Eclipse para que generen el código de dichos métodos en nuestras clases. Lo normal es que el copy/paste del código de dichos métodos de una clase a otra pueda devenir en errores; de esta forma, limitaremos la posibilidad de los mismos.
2. Entorno.
El tutorial está escrito usando el siguiente entorno:
- Hardware: Portátil MacBook Pro 15' (2.4 GHz Intel Core i7, 8GB DDR3 SDRAM).
- Sistema Operativo: Mac OS X Lion 10.7.4
- Eclipse Juno
3. Creación de las plantillas.
Para crear las plantillas desde las preferencias de Eclipse > Java > Editor > Templates podemos añadir las nuestras y el código propuesto es el siguiente:
3.1. Método hashCode.
Para el método hashCode:
${:import(org.apache.commons.lang.builder.HashCodeBuilder)}
@Override
public int hashCode() {
final HashCodeBuilder hcb = new HashCodeBuilder();
hcb.append(this.get${enclosing_method});
return hcb.toHashCode();
}
De modo que quedaría como sigue:
3.2. Método equals.
Para el método equals:
${:import(org.apache.commons.lang.builder.EqualsBuilder)}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof ${enclosing_type})) {
return false;
}
final ${enclosing_type} other = (${enclosing_type})obj;
final EqualsBuilder eqb = new EqualsBuilder();
eqb.append(this.get${field}, other.get${field});
return eqb.isEquals();
}
De modo que quedaría como sigue:
4. Uso de las plantillas.
Para hacer uso de las plantillas no hay más que comenzar a escribir el nombre y pulsar CTRL + espacio:
5. Conclusiones.
Sin más, intentamos reducir las posibilidades de cometer un error y, para ello, tenemos que conocer y explotar las herramientas con las que trabajamos.
Un saludo.
Jose







