Утечка в предупреждении конструктора
Я хотел бы избежать (большинство) предупреждений о 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).