2012-04-09 17 views

risposta

19

È possibile utilizzare un inizializzatore statico di fabbrica quando si istanzia la classe (Singleton pattern) e quindi aggiungere ogni istanza generato nel costruttore fabbrica a una lista ...

Qualcosa di simile a questo:

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 set di hash debole potrebbe essere una raccolta più bella in quanto ripulisce in modo trasparente tali riferimenti. 'Imposta istanze = Collections.newSetFromMap (nuova WeakHashMap ());' –

+2

Questa non è una soluzione valida per il mio problema attuale ... Voglio ottenere istanze di classi di terze parti. – barneypitt

7

Non in generale. Se stai usando l'API del debugger, potrebbe essere possibile (non l'ho verificato) ma non dovresti usare quello altro che per il debug.

Se il tuo progetto richiede questo, è probabilmente utile ripensare a tale progetto.

Problemi correlati