【发布时间】:2010-02-20 20:28:59
【问题描述】:
鉴于我有一个 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 之前完成计算,但在构造函数中?
谢谢。
【问题讨论】:
-
这被标记为 gwt 的可能原因是什么?因为你是在 gwt 中尝试的??
-
TextBox 是一个 GWT 类,但不,我想它不相关。
标签: java