Costruttore canonico compatto
Valida e normalizza i campi del record senza ripetere le liste di parametri.
Confronto Codice
✕ 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);
}
}
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Meno ripetizione
Non è necessario ripetere la lista dei parametri o assegnare manualmente ogni campo.
Validazione
Perfetto per controlli null, validazione degli intervalli e copie difensive.
Intento più chiaro
La sintassi compatta enfatizza la validazione, non il boilerplate.
Approccio Vecchio
Validazione costruttore esplicita
Approccio Moderno
Costruttore compatto
Dal JDK
16
Difficoltà
Intermedio
Supporto JDK
Costruttore canonico compatto
Disponibile
Ampiamente disponibile dal JDK 16 (marzo 2021)
Come funziona
I record possono dichiarare un costruttore canonico compatto che omette la lista dei parametri e le assegnazioni dei campi. Il compilatore assegna automaticamente i parametri ai campi dopo l'esecuzione della tua logica di validazione. Ideale per controlli preliminari, copie difensive e normalizzazione.
Documentazione Correlata