Corpi di costruttore flessibili
Valida e calcola valori prima di chiamare super() o this().
Confronto Codice
✕ 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);
}
}
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Fail fast
Valida gli argomenti prima che il costruttore della superclasse venga eseguito.
Calcola prima
Deriva valori e prepara i dati prima di chiamare super().
Nessun workaround
Niente più metodi helper statici o factory pattern per aggirare la restrizione.
Approccio Vecchio
Valida dopo super()
Approccio Moderno
Codice prima di super()
Dal JDK
25
Difficoltà
Intermedio
Supporto JDK
Corpi di costruttore flessibili
Disponibile
Finalizzato nel JDK 25 LTS (JEP 513, settembre 2025).
Come funziona
Java 25 rimuove la restrizione che super() debba essere la prima istruzione. Ora puoi validare argomenti, calcolare valori derivati e preparare lo stato prima di delegare al costruttore padre.
Documentazione Correlata