Constructeur canonique compact
Validez et normalisez les champs d'un record sans répéter la liste de paramètres.
Comparaison de Code
✕ 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);
}
}
Un problème avec ce code ? Dites-le nous.
Pourquoi la méthode moderne gagne
Moins de répétition
Pas besoin de répéter la liste de paramètres ni d'affecter chaque champ manuellement.
Validation
Parfait pour les vérifications de null, la validation de plages et les copies défensives.
Intention plus claire
La syntaxe compacte met l'accent sur la validation, pas sur le code répétitif.
Ancienne Approche
Validation explicite dans le constructeur
Approche Moderne
Constructeur compact
Depuis JDK
16
Difficulté
Intermédiaire
Support JDK
Constructeur canonique compact
Disponible
Disponible depuis JDK 16 (mars 2021)
Comment ça fonctionne
Les records peuvent déclarer un constructeur canonique compact qui omet la liste de paramètres et les affectations de champs. Le compilateur affecte automatiquement les paramètres aux champs après l'exécution de la logique de validation. Idéal pour les vérifications de préconditions, les copies défensives et la normalisation.
Documentation Associée