最佳答案
我希望避免(大部分) 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 方法为例)。