Language Średniozaawansowany

Waliduj i obliczaj wartości przed wywołaniem super() lub this().

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

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
Elastyczne ciała konstruktorów
Dostępne

Dostępne od JDK 25 LTS (JEP 513, wrzesień 2025)

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.