Zwarty konstruktor kanoniczny
Waliduj i normalizuj pola rekordów bez powtarzania listy parametrów.
Porównanie kodu
✕ 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);
}
}
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Mniej powtórzeń
Nie musisz powtarzać parametrów ani ręcznie przypisywać każdego pola.
Walidacja
Świetne miejsce na null checki, walidację zakresu i defensywne kopie.
Czytelniejsza intencja
Zwarta składnia podkreśla walidację zamiast boilerplate.
Stare podejście
Jawna walidacja w konstruktorze
Nowoczesne podejście
Konstruktor zwarty
Od JDK
16
Poziom trudności
Średniozaawansowany
Wsparcie JDK
Zwarty konstruktor kanoniczny
Dostępne
Szeroko dostępne od JDK 16 (marzec 2021)
Jak to działa
Rekordy mogą definiować zwarty konstruktor kanoniczny bez listy parametrów i bez ręcznych przypisań pól. Kompilator automatycznie przypisze parametry do pól po wykonaniu logiki walidacji. To idealne miejsce na preconditions, defensywne kopie i normalizację.
Powiązana dokumentacja