Flexible Konstruktorrümpfe
Werte validieren und berechnen, bevor super() oder this() aufgerufen wird.
Code-Vergleich
✕ 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.
Warum der moderne Weg gewinnt
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
JDK-Unterstützung
Flexible Konstruktorrümpfe
Verfügbar
Finalisiert in JDK 25 LTS (JEP 513, Sept. 2025).
Wie es funktioniert
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.
Zugehörige Dokumentation