Pregunta sobre java, class, instance – Obtención de todas las instancias de una clase [duplicado]

19

Posible duplicado:
¿Existe una forma sencilla de obtener todas las instancias de objetos de una clase específica en Java?

En java, ¿hay alguna forma posible de obtener todas las instancias de una determinada clase?

ya que los estaría instanciando, simplemente mantenga una referencia (¿débil? ¿Java tiene referencias débiles?) a cada instancia. Pero sospecho que cualquier diseño que requiera esto ... Mitch Wheat

Tu respuesta

2   la respuesta
19

Puede utilizar un inicializador estático de Factory al crear una instancia de su clase (Patrón de singleton) y luego agregue cada instancia generada en el constructor de fábrica a una Lista ...

Algo como esto :

<code>  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 
    }
  }
</code>
Esta no es una solución viable para mi problema actual ... Quiero obtener instancias de clases de terceros. barneypitt
Un conjunto de hash débil podría ser una mejor colección, ya que limpia dichas referencias de manera transparente.Set<MyObject> instances = Collections.newSetFromMap(new WeakHashMap<MyObject, Boolean>()); Peter Lawrey
7

puede ser posible (no lo he comprobado) pero no debería usar esootro que para la depuración.

Si su diseño requiere esto, probablemente vale la pena repensar ese diseño.

Preguntas relacionadas