Вопрос по java – Получение всех экземпляров класса [дубликата]

19

Возможное дублирование:
Есть ли простой способ получения всех экземпляров объекта определенного класса в Java

В Java, есть ли какой-нибудь возможный способ получить все экземпляры определенного класса?

Так как вы будете создавать их экземпляры, просто сохраняйте (слабые? у java слабые ссылки?) ссылку на каждый экземпляр. Но я бы заподозрил любой дизайн, который требовал этого ... Mitch Wheat

Ваш Ответ

2   ответа
19

когда создаете экземпляр своего класса Синглтон), а затем добавьте каждый сгенерированный экземпляр конструктора фабрики в список ...

Что-то вроде этого

  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 
    }
  }
Слабый хэш-набор может быть лучше, поскольку он прозрачно очищает такие ссылки.Set<MyObject> instances = Collections.newSetFromMap(new WeakHashMap<MyObject, Boolean>()); Peter Lawrey
Это не жизнеспособное решение для моей нынешней проблемы ... Я хочу получить экземпляры сторонних классов. barneypitt
7

это может быть возможно (я не проверял), но вы не должны использовать этоДруги чем для отладки.

Если ваш дизайн требует этого, вероятно, стоит переосмыслить этот дизайн.

Похожие вопросы