Language Fortgeschritten

Werte validieren und berechnen, bevor super() oder this() aufgerufen wird.

✕ 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);
    }
}
Problem mit diesem Code entdeckt? Sag uns Bescheid.
🛡️

Früh scheitern

Argumente validieren, bevor der Superklassen-Konstruktor ausgeführt wird.

🧮

Erst berechnen

Werte ableiten und Daten vorbereiten, bevor super() aufgerufen wird.

🧹

Keine Workarounds

Keine statischen Hilfsmethoden oder Factory-Muster mehr, um die Einschränkung zu umgehen.

Alter Ansatz
Validierung nach super()
Moderner Ansatz
Code vor super()
Seit JDK
25
Schwierigkeitsgrad
Fortgeschritten
Flexible Konstruktorrümpfe
Verfügbar

Finalisiert in JDK 25 LTS (JEP 513, Sept. 2025).

Java 25 hebt die Einschränkung auf, dass super() die erste Anweisung sein muss. Es können nun Argumente validiert, abgeleitete Werte berechnet und Zustände eingerichtet werden, bevor an den Elternkonstruktor delegiert wird.

Teilen 𝕏 🦋 in