Hola a todos, hoy os voy a explicar como funcionan los Record.
Los Record es una funcionalidad que apareció en la versión 14 de Java, nos permite crear una clase en una sola linea.
¿Cuando usar un record?
Yo recomiendo usar un record para clases simples que no requieran mucha lógica, así evitamos tener que crear toda la estructura básica como atributos, constructores, getters, etc.
Creación de un record
La sintaxis de record es la siguiente:
|
1 |
record <nombre clase> ( |
Por ejemplo, creamos un record de Persona:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class App { public static void main(String[] args) { // Creo un record record Persona(String nombre, String apellidos, int edad) { } // Instancio un objeto con el record que acabamos de crear Persona persona = new Persona("Fernando", "Ureña Gomez", 34); // Mostramos la informacion del objeto System.out.println(persona.toString()); } } |
Este es el resultado de la ejecución:

Las instancias que creemos con un record podemos obtener los valores de los atributos con el nombre del atributos o unos getters que nos proporciona, los atributos son finales, es decir, que no se pueden modificar.
Métodos en un Record
Si lo necesitamos, podemos añadir nuestros propios métodos en un record, para ello dentro de las llaves podemos definir e implementar los métodos, recuerda que tienes acceso a los atributos.
Usando el record de antes, vamos a añadir dos métodos, unopara devolver el nombre completo y otro para indicar si es mayor de edad.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
public class App { public static void main(String[] args) { // Creo un record record Persona(String nombre, String apellidos, int edad) { // Devolvemos el nombre completo public String nombreCompleto() { return this.nombre + " " + this.apellidos; } // Indicamos si es mayor de edad public boolean mayorEdad() { return this.edad >= 18; } } // Instancio un objeto con el record que acabamos de crear Persona persona = new Persona("Fernando", "Ureña Gomez", 5); // Llamo a los nuevos metodos System.out.println(persona.nombreCompleto()); if(persona.mayorEdad()){ System.out.println("Es mayor de edad"); }else{ System.out.println("No es mayor de edad"); } } } |
Ejemplo de ejecución:
Constructores adicionales
¿Y si queremos construir el objeto de varias maneras? Podemos añadir diferentes constructores, pero debemos tener en cuenta que se debe «redireccionar» hacia el constructor por defecto.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
public class App { public static void main(String[] args) { record Persona(String nombre, String apellidos, int edad) { // Constructores public Persona() { this("", "", 0); } public Persona(String nombre) { this(nombre, "", 0); } // Metodos public String nombreCompleto() { return this.nombre + " " + this.apellidos; } public boolean mayorEdad() { return this.edad >= 18; } } // Instancio un objeto con el record que acabamos de crear Persona persona = new Persona("Fernando"); System.out.println(persona); } } |
Ejemplo de la ejecución:
Atributos y métodos estáticos
También, podemos añadir atributos y métodos estáticos, vamos a añadir un atributo personasCreadas y un metodo para devolverlo.
Recuerda que al ser estatico, debe obtenerse mediante la clase, no con una instancia.
Te dejo un tutorial para recordarlo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
public class App { public static void main(String[] args) { // Creo un record record Persona(String nombre, String apellidos, int edad) { // Atributo estatico private static int personasCreadas = 0; // Constructores public Persona() { this("", "", 0); } public Persona(String nombre) { this(nombre, "", 0); } public Persona(String nombre, String apellidos) { this(nombre, apellidos, 0); } public Persona(String nombre, String apellidos, int edad) { this.nombre = nombre; this.apellidos = apellidos; this.edad = edad; Persona.personasCreadas++; } // Metodos public String nombreCompleto() { return this.nombre + " " + this.apellidos; } public boolean mayorEdad() { return this.edad >= 18; } // Metodo estatico public static int getPersonasCreadas() { return personasCreadas; } } // Creo dos instancias de persona Persona persona1 = new Persona("Fernando", "Ureña Gomez", 34); Persona persona2 = new Persona("Fernando", "Ureña Gomez", 34); System.out.println("Numero de personas creadas: " + Persona.getPersonasCreadas()); } } |
Ejemplo de ejecución:
![]()
Recuerda que esto y más, lo tienes en nuestro curso de Java en Github.
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta