Language Intermédiaire

Validez et normalisez les champs d'un record sans répéter la liste de paramètres.

✕ 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.
✂️

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
Constructeur canonique compact
Disponible

Disponible depuis JDK 16 (mars 2021)

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.

Partager 𝕏 🦋 in