我想避免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方法)。
冉冉说
人到中年有点甜
相关分类