在构造函数警告中泄漏此内容
我想避免 Netbeans 6.9.1 的(大多数)警告,但我对警告有问题。'Leaking this in constructor'
我理解这个问题,在构造函数中调用一个方法并传递“”是危险的,因为“”可能尚未完全初始化。this
this
在我的单例类中修复警告很容易,因为构造函数是私有的,并且仅从同一类调用。
旧代码(简化):
private Singleton() {
...
addWindowFocusListener(this);
}
public static Singleton getInstance() {
...
instance = new Singleton();
...
}
新代码(简化):
private Singleton() {
...
}
public static Singleton getInstance() {
...
instance = new Singleton();
addWindowFocusListener( instance );
...
}
如果构造函数是公共的,并且可以从其他类调用,则此修复程序不起作用。如何修复以下代码:
public class MyClass {
...
List<MyClass> instances = new ArrayList<MyClass>();
...
public MyClass() {
...
instances.add(this);
}
}
当然,我想要一个不需要使用这个类修改我所有代码的修复程序(例如,通过调用init方法)。