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:
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
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.
En este ejemplo, la propiedad zipCode no tiene getter definido. Así podremos escribir algo como:
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:
Podemos usar toString mediante
System.out.println(diego.toString());
que devuelve (la edad no está incluida):
Y si intentamos establecer el nombre a null, como es Non-Nullable nos encontraremos con una excepción:
@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:
Y luego poder usarla así:
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 Bootcamp Java.