2012-04-09 23 views

Odpowiedz

19

Można użyć fabryce statycznego inicjatora podczas wystąpienia swoją klasę (Singleton pattern), a następnie dodać każdy wygenerowany instancji w konstruktorze fabryki do listy ...

coś takiego:

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

Słaby zestaw haszyszu może być ładniejszą kolekcją, ponieważ wyczyści takie odniesienia w sposób przezroczysty. 'Set instances = Collections.newSetFromMap (new WeakHashMap ());' –

+2

To nie jest możliwe rozwiązanie mojego obecnego problemu ... Chcę uzyskać wystąpienia klas innych firm. – barneypitt

7

Ogólnie. Jeśli korzystasz z interfejsu API debuggera, może to być możliwe (nie sprawdziłem), ale nie powinieneś używać tego innego niż niż do debugowania.

Jeśli Twój projekt tego wymaga, prawdopodobnie warto przemyśleć ten projekt.