2012-04-09 17 views

Respuesta

19

Puede utilizar un inicializador estático fábrica cuando se instancia la clase (Singleton pattern) y luego se agrega cada instancia generada en el constructor de la fábrica a una lista ...

Algo como esto:

class MyObject { 
    private static List instances = new ArrayList(); 

    public static MyObject createMyObject() { 
    MyObject o = new MyObject(); 
    instances.add(new java.lang.ref.WeakReference(o)); 
    return o; 
    } 

    public static List getInstances() { 
    return instances; 
    } 

    private MyObject() { 
    // Not allowed 
    } 
    } 
+0

Un conjunto de hash débil podría ser una colección más agradable, ya que limpia tales referencias de forma transparente. 'Establecer instances = Collections.newSetFromMap (nuevo WeakHashMap ());' –

+2

Esto no es una solución viable para mi problema actual ... Quiero obtener instancias de clases de terceros. – barneypitt

7

No en general. Si está utilizando la API del depurador, es posible (no lo he comprobado) pero no debe usar otro que para la depuración.

Si su diseño lo requiere, probablemente valga la pena reconsiderar ese diseño.

Cuestiones relacionadas