Language Intermediário

Valide e compute valores antes de chamar 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);
    }
}
Viu um problema com este código? Nos avise.
🛡️

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
Corpos de construtores flexíveis
Disponível

Finalizado no JDK 25 LTS (JEP 513, set 2025).

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.

Compartilhar 𝕏 🦋 in