Corps de constructeur flexibles
Validez et calculez des valeurs avant d'appeler super() ou this().
Comparaison de Code
✕ 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);
}
}
Un problème avec ce code ? Dites-le nous.
Pourquoi la méthode moderne gagne
Échec rapide
Validez les arguments avant que le constructeur de la superclasse s'exécute.
Calculer d'abord
Dérivez des valeurs et préparez des données avant d'appeler super().
Sans solutions de contournement
Plus besoin de méthodes statiques auxiliaires ni de patterns factory pour contourner la restriction.
Ancienne Approche
Valider après super()
Approche Moderne
Code avant super()
Depuis JDK
25
Difficulté
Intermédiaire
Support JDK
Corps de constructeur flexibles
Disponible
Finalisé dans JDK 25 LTS (JEP 513, sept. 2025).
Comment ça fonctionne
Java 25 supprime la restriction selon laquelle super() doit être la première instruction. Vous pouvez maintenant valider des arguments, calculer des valeurs dérivées et préparer l'état avant de déléguer au constructeur parent.
Documentation Associée