Lombok: olvida los getters y setters en tus clases Java

Autor: | Última modificación: 13 de marzo de 2024 | Tiempo de Lectura: 2 minutos
Temas en este post: ,
El post de hoy es especial para Androideros experimentados, y está a cargo de Diego Freniche, experto desarrollador multiplataforma e Instructor del Curso de Programación Android Intermedio en KeepCoding. Conoce el Proyecto Lombok y descubre cómo te ayudará a optimizar líneas de código en tu desarrollo.

Comenzamos con un ejemplo de Lombok

Supongamos que queremos trabajar con datos de personas. Podemos definirnos una clase de la siguiente forma: lombok1Class A esta clase, conocida como un POJO (objeto java de toda la vida) podemos añadirle bien a mano, bien con ayuda de nuestro IDE favorito los getters y setters públicos para convertirla en un JavaBean. El problema es que esos @getter @setter lombok muchas veces no aportan demasiado (otras veces sí, ojo). Y terminamos con código de relleno como:

//java lombok setter

lombok2 Y sí, los IDEs actuales nos hacen este trabajo. Pero ese código siempre estará ahí. Al leerlo. ¿No sería posible prescindir de este «código de relleno» pero tener todas las ventajas de losgetters y setters? ¿Y si pudiéramos tener otras ventajas? Por ejemplo, la implementación de hashcode o equals en nuestra clase. Bien, pues todo esto nos lo permite hacer el Proyecto Lombok. Para que funcione, necesitamos añadir la librería de Lombok a nuestro proyecto, bien descargando y añadiendo el jar correspondiente o bien usando Gradle. Si usas Eclipse, lo mejor es descargar lombok.jar y ejecutarlo (modificará tu Eclipse para que Lombok funcione)

Getters y Setters

Las anotaciones @Getter y @Setter hacen exactamente lo que su nombre sugiere: añaden para nosotros un getter / setter para cada propiedad. codigoEn este ejemplo, la propiedad zipCode no tiene getter definido. Así podremos escribir algo como: lombok4

Otras perlas

Lombok dispone además de anotaciones para impedir que una propiedad sea nula, como @NonNull o @ToString para generar este método con los campos que le digamos. Pero la mejor puede que sea @EqualsAndHashCode que nos evita tener que escribir implementaciones de estos métodos, algo necesario si queremos serializar nuestra clase, o usarla en una estructura de datos que maneje hashes de los objetos. Así, si escribimos: lombok5 Podemos usar toString mediante System.out.println(diego.toString()); que devuelve (la edad no está incluida): codigoY si intentamos establecer el nombre a null, como es Non-Nullable nos encontraremos con una excepción: lombok7

@Data: I want it all

@Data nos da de golpe:
  • @EqualsAndHashCode
  • @Getter y @Setter para todas las propiedades
  • @ToString
  • Un constructor público con todas los propiedades no marcadas como @NonNull.

Bonus

Si quieres tener implementado un patrón Builder (con un método factory estático)para construir nuestros objetos de forma sencilla, usa la anotación @Builder. Junto con @Data, permite escribir una clase como esta: lombok8 Y luego poder usarla así: codigo Así que recuerda: usa getter lombok para reducir el código de relleno en tus proyectos. Prueba esta ligera librería y cuéntanos qué te ha parecido. ¿Te ha resultado útil? Domina Android y conoce todas las posibilidades que ofrece en el KeepCoding Startup Engineering Bootcamp.