Reduciendo código con el proyecto Lombok

Bajo esta austera web está una de las librerías más útiles que puedes añadir a tu proyecto para ahorrar código. Project Lombok nació en el lejano 2009 con la misión de eliminar los clásicos getters y setters de los pojos, para conseguirlo debemos añadir una serie de anotaciones con las que manejaremos lo que queremos que se gestione en nuestra clase.

Para obrar la magia, lo primero que debemos hacer es añadir su librería a nuestro proyecto, una opción es bajarte la librería directamente de su web, o mejor si usamos Maven y añadimos esta dependencia.

<dependencies>
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<version>1.18.10</version>
		<scope>provided</scope>
	</dependency>
</dependencies>

Pero esto no será suficiente, también debemos añadirla al editor que vayamos a utilizar, si has usado Maven puedes ir al repositorio .m2\repository\org\projectlombok\lombok\x.xx.xx y ejecuta.

java -jar lombok-x.xx.xx.jar

Es posible que no encuentre el IDE que estés utilizando, le deberás indicar la localización de su ejecutable y pulsar en Install / Update.

Cierra tu editor, vuelve a abrirlo y ya estás listo para trabajar con Lombok.

En Eclipse la manera más sencilla de saber que todo ha ido bien es utilizar la anotación @Data en un pojo con variables sin constructor y sin getters y setters y ver la ventana «Outline».

Ahí vemos la magia, aunque no tengamos ni un solo get y set, en el «Outline» vemos que tenemos muchas más cosas, eso es lo que nos aporta la anotación @Data, getters, setters, toString(), hashCode(), equals(Object) y un constructor con todos los campos.

Ahora bien, puede que no quieras dejar a Lombok el control de tantas cosas, así que para cada una de ellas tienes tu propia anotación, repasemos unas cuantas.

@AllArgsConstructor @NoArgsConstructor

Con el primero tenemos un constructor con todos los campos del pojo, con el segundo un constructor vacío.

@Getter @Setter

Como su propio nombre indica, con ellos añadiremos los get y set de cada uno de los campos, si quieres se lo puedes indicar a cada campo en concreto.

public class Persona {

	private @Getter @Setter String nombre;
	private @Getter @Setter String apellidos;
}

@ToString

Te genera la implementación del método toString(). Por ejemplo, si rellenamos los campos de la clase «Persona» y los mostramos por consola veremos como resultado el toString() tal que así.

Persona(nombre=Juan, apellidos=Perez)

Esta es una anotación muy configurable, por ejemplo podemos excluir algún campo con ToString.Exclude.

public @ToString class Persona {

	private @Getter @Setter String nombre;
	private @Getter @Setter String apellidos;
	@ToString.Exclude @Getter @Setter private int edad;
}

En su documentación puedes ver cuánto puedes jugar con ella.

@EqualsAndHashCode

Tendremos a disposición los métodos equals(Object) y hashCode().

@Builder

Te genera automáticamente el código requerido para que su clase sea instanciable.

Libro libro = Libro.builder().autor("Stephen King").titulo("I.T").build();

Con esto puedes ver el gran potencial que tienes para tu código, merece la pena pasarse por su documentación y jugar con las anotaciones, seguro que encuentras alguna que se adapte a tus necesidades y caprichos.

En GitHub he subido las distintas pruebas que he estado haciendo para este artículo.

Dejar una contestacion

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *