Filtrando esto en la advertencia del constructor
Me gustaría evitar (la mayoría de) las advertencias de Netbeans 6.9.1, y tengo un problema con el'Leaking this in constructor'
advertencia.
Entiendo el problema, llamando a un método en el constructor y pasando "this
"es peligroso, ya que"this
"puede que no se haya inicializado completamente.
Fue fácil arreglar la advertencia en mis clases de singleton, porque el constructor es privado y solo se llama desde la misma clase.
Código antiguo (simplificado):
private Singleton() {
...
addWindowFocusListener(this);
}
public static Singleton getInstance() {
...
instance = new Singleton();
...
}
Nuevo código (simplificado):
private Singleton() {
...
}
public static Singleton getInstance() {
...
instance = new Singleton();
addWindowFocusListener( instance );
...
}
Esta solución no funciona si el constructor es público y se puede llamar desde otras clases. ¿Cómo es posible arreglar el siguiente código:
public class MyClass {
...
List<MyClass> instances = new ArrayList<MyClass>();
...
public MyClass() {
...
instances.add(this);
}
}
Por supuesto, quiero una solución que no requiera modificar todos mis códigos usando esta clase (por ejemplo, llamando a un método init).