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()
.
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:
equals()
, hashCode()
y toString()
generados automáticamente.
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í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. |
record
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]
}
}
record
public record Producto(String nombre, double precio) {
public String descripcion() {
return "Producto: " + nombre + ", Precio: $" + precio;
}
}
public record Persona(String nombre, int edad) {
public Persona {
if (edad < 0) {
throw new IllegalArgumentException("La edad no puede ser negativa.");
}
}
}
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.");
}
}
}
record
Los records son útiles cuando se necesita:
Para más información, consulta la documentación oficial de Java 21.
Jorge García
Fullstack developer