Language Średniozaawansowany

Waliduj i normalizuj pola rekordów bez powtarzania listy parametrów.

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

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
Zwarty konstruktor kanoniczny
Dostępne

Szeroko dostępne od JDK 16 (marzec 2021)

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ę.

Udostępnij 𝕏 🦋 in