Language Intermédiaire

Validez et calculez des valeurs avant d'appeler super() ou 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);
    }
}
Un problème avec ce code ? Dites-le nous.
🛡️

É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
Corps de constructeur flexibles
Disponible

Finalisé dans JDK 25 LTS (JEP 513, sept. 2025).

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.

Partager 𝕏 🦋 in