Reducir código con Lombok

Lombok es un procesador de anotaciones Java que nos permite agilizar el proceso de desarrollo de una aplicación de software, se ejecuta en tiempo de compilación, durante este proceso crea e inyecta automáticamente el código determinado por la correspondiente anotación Java.

java lombok netbeans

A la izquierda vemos la clase Person con sus correspondientes campos privados y sus métodos get y set, en el lado derecho vemos la misma clase utilizando lombok, solamente agregando las anotaciones @Getter y @Setter le indicamos que deseamos generar los métodos get y set para todos los campos de la clase Person.

Instalación de Lombok en Maven y NetBeans

Primero que nada creamos el proyecto tipo Maven, en Netbeans seleccionamos: File | New Project…

maven en netbeans

Lo siguiente que necesitamos es editar el archivo pom.xml para agregar lombok a nuestro proyecto, abrimos el archivo y agregamos la siguiente dependencia:

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.10</version>
    </dependency>
</dependencies>

En este momento ya podemos crear la clase Person y agregar las correspondientes anotaciones lombok.

@Getter y @Setter

Estas anotaciones son usadas para generar los métodos getter y setter, podemos establecer el nivel de acceso usando la enumeración AccessLevel.

import lombok.Getter;
import lombok.Setter;

@Getter @Setter
public class Person {
    
    private String nombre;
    private String apellido;
    private Integer edad;

}

Para asegurarnos de que funciona correctamente nos vamos al menú principal de NetBeans y pulsamos la opción: Window | Navigator, esto nos permite mostrar una ventana donde se observa la clase que se está editando con todos los elementos de la misma.

inspeccionar clase java

Es posible utilizar estas anotaciones a nivel de campo, además podemos establecer el nivel de acceso de los métodos generados, si utilizamos las anotaciones a nivel de clase y de campo simultáneamente, la última prevalece.

@Getter @Setter
public class Person {
    
    private String nombre;
    private String apellido;
    
    @Setter(AccessLevel.PRIVATE) private Integer edad;
}

En este ejemplo el método setEdad(Integer edad) será privado.

@ToString

Esta anotación la utilizaremos para generar el método toString(), la aplicamos a nivel de clase y cuenta con las siguientes configuraciones:

Por defecto la cadena generado corresponde al nombre de la clase seguido de una lista de los campos y su valor actual separados por coma.

@Getter @Setter
@ToString
public class Person {   
    private String nombre;
    private String apellido;
    private Integer edad;
}

lombok tostring

Usando @ToString(exclude = {"edad", "apellido"}) podemos indicar la lista de campos que deseamos excluir de la representación en cadena de la clase a la cual le aplicamos la anotación.

Del mismo modo @ToString(of = {"nombre", "edad"}) lo utilizamos para indicar cuales son los campos que deseamos incluir en la cadena, lo contrario de exclude.

@NoArgsConstructor y @AllArgsConstructor

Usaremos estas anotaciones para generar el constructor de la clase, la primera crea un constructor sin argumentos y el segundo un constructor que permite inicializar cada uno de los campos de la clase.

generar constructor con lombok

Controlamos el nivel de acceso con access = AccessLevel.*, en nuestro ejemplo el constructor sin argumentos es privado, si no indicamos el AccessLevel será publico como el segundo constructor generado con @AllArgsConstructor.

@EqualsAndHashCode

Esta anotación la utilizaremos para sobre escribir los métodos equals() y hashCode(), podemos indicar que campos deseamos usar la comparación en el método equals() y la generación del código hash utilizando exclude y of del mismo modo como los hicimos con la anotación @ToString que vimos anteriormente.

equalsandhashcode con lombok

El código de la izquierda ha sido generado por NetBeans y nos es necesariamente el mismo que genera lombok con la anotación @EqualsAndHashCode pero si debe ser algo mas o menos parecido.

@Data

Esta anotación es una combinación de todas las anotaciones que vimos anteriormente en este tutorial con excepción de @AllArgsConstructor, es muy útil cuando trabajamos con herramientas como el ORM Hibernate.

Existen muchas otras anotaciones, puedes verlas en la web https://projectlombok.org/ veras varios ejemplos de como utilizarlas. 

Comentarios

Temas relacionados

Entradas populares de este blog

tkinter Grid

tkinter Canvas

Histogramas OpenCV Python

Python Binance API