Compartir
Contenidos contratados por la marca que se menciona

Lombok: olvida los getters y setters en tus clases Java

Lombok: olvida los getters y setters en tus clases Java
Guardar
2 Comentarios
Publicidad
Tweets por el @agbotraining.

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 AGBO Training.

Conoce el Proyecto Lombok y descubre cómo te ayudará a optimizar líneas de código en tu desarrollo.

Comenzamos con un ejemplo

Supongamos que queremos trabajar con datos de personas. Podemos definirnos una clase de la siguiente forma:

Lombok1

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 getters y setters muchas veces no aportan demasiado (otras veces sí, ojo). Y terminamos con código de relleno como:

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 los getters 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.

Lombok3

En 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):

Lombok6

Y 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í:

    Lombok9

    Así que recuerda: usa Lombok para reducir el código de relleno en tus proyectos.

    Prueba esta ligera librería y cuéntanos qué te ha parecido.

    Domina Android y conoce todas las posibilidades que ofrece en el KeepCoding Startup Engineering Bootcamp.

    Imagen | Ulcano Tekno

    En Desarrollo para Startups

    Publicidad

    También te puede gustar

    Ver más artículos