Corpos de construtores flexíveis
Valide e compute valores antes de chamar super() ou this().
Comparação 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);
}
}
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Falha rápida
Valide argumentos antes do construtor da superclasse executar.
Compute primeiro
Derive valores e prepare dados antes de chamar super().
Sem workarounds
Chega de métodos auxiliares estáticos ou padrões factory para contornar a restrição.
Abordagem Antiga
Validar após super()
Abordagem Moderna
Código antes de super()
Desde o JDK
25
Dificuldade
Intermediário
Suporte JDK
Corpos de construtores flexíveis
Disponível
Finalizado no JDK 25 LTS (JEP 513, set 2025).
Como funciona
O Java 25 remove a restrição de que super() deve ser a primeira instrução. Agora você pode validar argumentos, computar valores derivados e preparar estado antes de delegar ao construtor da classe pai.
Documentação Relacionada