Language Fortgeschritten

Record-Felder validieren und normalisieren, ohne die Parameterliste zu wiederholen.

✕ 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);
    }
}
Problem mit diesem Code entdeckt? Sag uns Bescheid.
✂️

Weniger Wiederholung

Parameterliste muss nicht wiederholt und jedes Feld nicht manuell zugewiesen werden.

🛡️

Validierung

Perfekt für Null-Prüfungen, Bereichsvalidierung und defensive Kopien.

📖

Klarere Absicht

Die kompakte Syntax betont die Validierung, nicht den Boilerplate-Code.

Alter Ansatz
Explizite Konstruktorvalidierung
Moderner Ansatz
Kompakter Konstruktor
Seit JDK
16
Schwierigkeitsgrad
Fortgeschritten
Kompakter kanonischer Konstruktor
Verfügbar

Seit JDK 16 allgemein verfügbar (März 2021)

Records können einen kompakten kanonischen Konstruktor deklarieren, der die Parameterliste und Feldzuweisungen weglässt. Der Compiler weist Parameter nach der Ausführung Ihrer Validierungslogik automatisch Feldern zu. Dies ist ideal für Vorbedingungsprüfungen, defensive Kopien und Normalisierung.

Teilen 𝕏 🦋 in