Dado que tengo una clase Base que tiene un constructor de argumento único con un objeto TextBox como argumento. Si tengo una clase Simple de la siguiente forma:
public class Simple extends Base {
public Simple(){
TextBox t = new TextBox();
super(t);
//wouldn't it be nice if I could do things with t down here?
}
}
Recibiré un error que me dice que la llamada a super debe ser la primera llamada en un constructor. Sin embargo, por extraño que parezca, puedo hacer esto.
public class Simple extends Base {
public Simple(){
super(new TextBox());
}
}
¿Por qué se permite esto, pero no el primer ejemplo? Puedo entender la necesidad de configurar la subclase primero, y quizás no permitir que se creen instancias de variables de objeto antes de llamar al superconstructor. Pero es claramente una variable de método (local), entonces, ¿por qué no permitirlo?
¿Hay alguna forma de sortear esta limitación? ¿Existe una forma buena y segura de mantener variables para las cosas que podría construir ANTES de llamar a super pero DESPUÉS de haber ingresado al constructor? O, de forma más genérica, ¿permitir que el cálculo se realice antes de que se llame realmente a super, pero dentro del constructor?
Gracias.