Java 14, Records

Tabla de Contenidos

  1. Conclusión

En este artículo les voy comentar de una nueva característica en preview que viene como parte de Java 14 y son los Records. Como tal, debemos usar la directriz --enable-preview ya que esta deshabilitado por omisión.

Para empezar, debemos tener claro que un Record es una clase que explícitamente tiene como objetivo almacenar datos. Tradicionalmente si uno quiere crear una clase para ello y tenerla como un Data Transfer Object (DTO) se debe agregar todos los set/get, el equals, hashcode y el toString().

Pero con Java 14 es posible crear un DTO de una manera muy sencilla.

public record Usuario(String nombre, String apellido) {
}

Y ahora podemos usarla en nuestro código de la siguiente manera:

public static void main(String[] args) {
    var usuario = new Usuario("Gerardo", "Arroyo");
    System.out.println(usuario + " Nombre[" + usuario.nombre()+ "]");
}

Resulta muy sencillo y de fácil lectura, comparado con la manera tradicional de hacerlo.

Y el resultado sería:

  Usuario[nombre=Gerardo, apellido=Arroyo] Nombre[Gerardo]

También es posible incluir métodos estáticos para que operen sobre su estado.

public record Usuario(String nombre, String apellido) {


    public static void calcularXYZ() {
        // Cualquier cálculo u operación que necesitemos.
    }
}

Aunque está en preview me parece que es una adición más que bienvenida en Java. Creo que se convertirá en el mecanismo por omisión para DTO una vez que se formalice.

Conclusión


Espero que este artículo les sirva de introducción a esta nueva característica de Java 14, la cuál encuentro sumamente promisoria.

Written by

Gerardo Arroyo Arce

Arquitecto de Soluciones AWS certificado x10 con pasión por compartir conocimiento. Como miembro activo de AWS Community Builders, ex-AWS Ambassador y AWS User Group Leader, me dedico a construir puentes entre la tecnología y las personas. Desarrollador Java de corazón y consultor independiente, llevo la arquitectura cloud más allá de la teoría a través de conferencias internacionales y soluciones del mundo real. Mi curiosidad insaciable por aprender y compartir me mantiene en constante evolución junto a la comunidad tech.

Inicia la conversación