Volver a la página principal
sábado 25 enero 2025
4

Cómo usar record en Java 21

En Java 21, la funcionalidad de record permite definir clases inmutables de manera concisa, proporcionando una sintaxis simplificada para la creación de objetos que solo contienen datos. Los records eliminan la necesidad de escribir código repetitivo como constructores, métodos equals(), hashCode() y toString().

¿Qué es un record en Java?

Un record es un tipo de clase especial introducido en Java 14 como una característica preliminar y consolidado en versiones posteriores. Su propósito es encapsular datos de forma inmutable, brindando automáticamente funcionalidades como:

  • Constructor con argumentos para todos los campos.
  • Métodos equals(), hashCode() y toString() generados automáticamente.
  • Accesores para cada campo (sin necesidad de getters explícitos).
  • Inmutabilidad de los valores después de la creación del objeto.

Sintaxis de un record en Java 21

Para definir un record, se usa la siguiente sintaxis:

public record NombreDelRecord(TipoCampo1 campo1, TipoCampo2 campo2) {}

Por ejemplo, para definir un record que represente una persona con nombre y edad:

public record Persona(String nombre, int edad) {}

Características principales de los records

Característica Descripción
Definición concisa Se declaran en una sola línea sin necesidad de boilerplate.
Inmutabilidad Los campos son finales por defecto (no pueden modificarse).
Métodos generados Incluye equals(), hashCode(), toString().
Accesores automáticos Métodos implícitos con el mismo nombre del campo.
Permiten métodos adicionales Se pueden definir métodos personalizados.

Ejemplos de uso de record

Creación y uso de un record

public record Persona(String nombre, int edad) {}

public class Main {
    public static void main(String[] args) {
        Persona p = new Persona("Juan", 30);

        System.out.println(p.nombre());  // Accede al campo 'nombre'
        System.out.println(p.edad());    // Accede al campo 'edad'
        System.out.println(p);           // Salida: Persona[nombre=Juan, edad=30]
    }
}

Implementación de métodos en un record

public record Producto(String nombre, double precio) {
    public String descripcion() {
        return "Producto: " + nombre + ", Precio: $" + precio;
    }
}

Definición de un constructor compacto

public record Persona(String nombre, int edad) {
    public Persona {
        if (edad < 0) {
            throw new IllegalArgumentException("La edad no puede ser negativa.");
        }
    }
}

Desestructuración de un record (Pattern Matching)

A partir de Java 21, se pueden descomponer registros de forma directa:

public class Main {
    public static void main(String[] args) {
        Persona p = new Persona("Ana", 25);

        if (p instanceof Persona(String nombre, int edad)) {
            System.out.println(nombre + " tiene " + edad + " años.");
        }
    }
}

Cuándo usar record

Los records son útiles cuando se necesita:

  • Representar datos inmutables (por ejemplo, configuraciones, respuestas de API).
  • Sustituir clases tipo DTO (Data Transfer Object).
  • Reducir el código repetitivo en estructuras de solo datos.

Referencias

Para más información, consulta la documentación oficial de Java 21.

Etiquetas:
java
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer