Elastyczne ciała konstruktorów
Waliduj i obliczaj wartości przed wywołaniem super() lub this().
Porównanie kodu
✕ Java 8
class Square extends Shape {
Square(double side) {
super(side, side);
// can't validate BEFORE super!
if (side <= 0)
throw new IAE("bad");
}
}
✓ Java 25+
class Square extends Shape {
Square(double side) {
if (side <= 0)
throw new IAE("bad");
super(side, side);
}
}
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Szybkie wykrywanie błędów
Waliduj argumenty przed uruchomieniem konstruktora nadklasy.
Najpierw obliczenia
Wylicz wartości i przygotuj dane przed wywołaniem super().
Bez obejść
Koniec ze statycznymi metodami pomocniczymi czy wzorcami fabryki jako obejściami tego ograniczenia.
Stare podejście
Walidacja po super()
Nowoczesne podejście
Kod przed super()
Od JDK
25
Poziom trudności
Średniozaawansowany
Wsparcie JDK
Elastyczne ciała konstruktorów
Dostępne
Dostępne od JDK 25 LTS (JEP 513, wrzesień 2025)
Jak to działa
Java 25 znosi ograniczenie, że super() musi być pierwszą instrukcją. Teraz możesz walidować argumenty, obliczać pochodne wartości i przygotowywać stan przed delegowaniem do konstruktora nadklasy.
Powiązana dokumentacja
Dowód