我认为这个问题的具体用途如下,但它更加通用化。在构造函数结束之前如何引用/处理“this”?
我有一个自定义JFrame
类,它也可以作为其组件的ActionListener
。所以我的构造看起来像下面这样:
private JButton myButton;
public MyCustomFrame() {
super();
myButton.addActionListener(this);
// ... more stuff
}
我的问题是,这是如何在幕后工作?如果构造函数是“创建”this
引用的对象,那么在构造函数返回之前如何使用this
?代码编译和工作完全正常(据我所知),因此该对象在某种意义上必须已经“存在”,但我担心这可能会导致无法预料的问题。通过对addActionListener()
的“部分构建”引用(或者只是通常对其执行任何逻辑)有没有任何危险?还是有一些幕后的魔法发生让我安全?
例如,那些没有默认值并且必须由构造函数提供的东西呢?如果我声明了private final String SOME_VALUE;
,我知道这应该默认为null
,但该对象不应该完全形成,直到常量在构造函数中提供一个值。那么,尽管是最终的,参考文献可能会改变价值吗?
没有直接连接到你的问题,但它可以为你的目的http://stackoverflow.com/a/3404369/2350145 –