【发布时间】:2013-12-16 19:26:23
【问题描述】:
我想到这个问题的具体用法如下,不过笼统的多。
我有一个自定义的JFrame 类,它也用作其组件的ActionListener。所以我的构造函数如下所示:
private JButton myButton;
public MyCustomFrame() {
super();
myButton.addActionListener(this);
// ... more stuff
}
我的问题是,这实际上是如何在幕后工作的?如果构造函数是“创建”this 引用的对象,我如何在构造函数返回之前使用this?代码可以编译并且工作得非常好(据我所知),所以该对象在某种意义上必须已经“存在”,但我担心这可能会导致无法预料的问题。将“部分构造”的引用传递给addActionListener()(或者只是对其执行任何逻辑)是否有任何危险?还是有一些幕后的魔法让我安全?
例如,那些没有默认值并且必须由构造函数提供的东西呢?如果我声明了private final String SOME_VALUE;,我知道这应该默认为null,但是在构造函数中为常量提供值之前,该对象不应该完全形成。那么,尽管参考是最终的,但参考值可能会发生变化吗?
【问题讨论】:
-
与您的问题没有直接关系,但它可能符合您的目的stackoverflow.com/a/3404369/2350145
标签: java constructor this