Constructor canónico compacto
Valida y normaliza los campos de un record sin repetir la lista de parámetros.
Comparación de Código
✕ Java 16
public record Person(String name,
List<String> pets) {
// Full canonical constructor
public Person(String name,
List<String> pets) {
Objects.requireNonNull(name);
this.name = name;
this.pets = List.copyOf(pets);
}
}
✓ Java 16+
public record Person(String name,
List<String> pets) {
// Compact constructor
public Person {
Objects.requireNonNull(name);
pets = List.copyOf(pets);
}
}
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Menos repetición
No es necesario repetir la lista de parámetros ni asignar cada campo manualmente.
Validación
Perfecto para comprobaciones de nulos, validación de rangos y copias defensivas.
Intención más clara
La sintaxis compacta enfatiza la validación, no el código repetitivo.
Enfoque Antiguo
Validación explícita en el constructor
Enfoque Moderno
Constructor compacto
Desde JDK
16
Dificultad
Intermedio
Soporte JDK
Constructor canónico compacto
Disponible
Ampliamente disponible desde JDK 16 (marzo 2021)
Cómo funciona
Los records pueden declarar un constructor canónico compacto que omite la lista de parámetros y las asignaciones de campos. El compilador asigna automáticamente los parámetros a los campos después de ejecutar la lógica de validación. Es ideal para comprobaciones de precondiciones, copias defensivas y normalización.
Documentación Relacionada