假设我有一个类 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 之前完成计算,但是在构造函数中?
谢谢你。