Eventuali duplicati:
Is there a simple way of obtaining all object instances of a specific class in JavaOttenere tutte le istanze di una classe
in Java, non v'è alcun modo possibile per ottenere tutte le istanze di una determinata classe?
Eventuali duplicati:
Is there a simple way of obtaining all object instances of a specific class in JavaOttenere tutte le istanze di una classe
in Java, non v'è alcun modo possibile per ottenere tutte le istanze di una determinata classe?
È 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
}
}
Un set di hash debole potrebbe essere una raccolta più bella in quanto ripulisce in modo trasparente tali riferimenti. 'Imposta
Questa non è una soluzione valida per il mio problema attuale ... Voglio ottenere istanze di classi di terze parti. – barneypitt
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.
dal li istanziate, semplicemente mantenete un riferimento (debole? java ha riferimenti deboli?) a ciascuna istanza. Ma sospetterei qualsiasi progetto che richiedesse questo ... –