Cuerpos de constructor flexibles
Valida y calcula valores antes de llamar a super() o this().
Comparación de Código
✕ 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);
}
}
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Fallo rápido
Valida los argumentos antes de que se ejecute el constructor de la superclase.
Calcular primero
Deriva valores y prepara datos antes de llamar a super().
Sin soluciones alternativas
No más métodos estáticos auxiliares ni patrones factory para sortear la restricción.
Enfoque Antiguo
Validar después de super()
Enfoque Moderno
Código antes de super()
Desde JDK
25
Dificultad
Intermedio
Soporte JDK
Cuerpos de constructor flexibles
Disponible
Finalizado en JDK 25 LTS (JEP 513, sept. 2025).
Cómo funciona
Java 25 elimina la restricción de que super() debe ser la primera sentencia. Ahora puedes validar argumentos, calcular valores derivados y preparar estado antes de delegar al constructor padre.
Documentación Relacionada