假设我有一个Base类,该类具有一个带有TextBox对象作为参数的单个参数构造函数。如果我有以下形式的简单类:
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?
}
}
我会收到一条错误消息,告诉我对super的调用必须是构造函数中的第一个调用。但是,奇怪的是,我可以做到这一点。
public class Simple extends Base {
public Simple(){
super(new TextBox());
}
}
为什么允许这样做,但第一个例子不允许?我可以理解需要先设置子类,并且可能不允许在调用超级构造函数之前实例化对象变量。但是,t显然是方法(局部)变量,那么为什么不允许它呢?
有没有办法解决这个限制?在调用super之前但在进入构造函数之后,是否存在一种很好且安全的方式来将变量保存到可能要构造的事物中?或者,更笼统地说,允许在super被实际调用之前但在构造函数中进行计算?
谢谢。