Kompakter kanonischer Konstruktor
Record-Felder validieren und normalisieren, ohne die Parameterliste zu wiederholen.
Code-Vergleich
✕ 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.
Warum der moderne Weg gewinnt
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
JDK-Unterstützung
Kompakter kanonischer Konstruktor
Verfügbar
Seit JDK 16 allgemein verfügbar (März 2021)
Wie es funktioniert
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.
Zugehörige Dokumentation