有没有办法获得(知道)从同一个类中的类创建的所有对象?

时间:2015-12-13 16:37:03

标签: java

如果我使用一些属性(例如A)创建一个类a, b, c,并创建对象A x1; A x2; A x3; ... A xN。有没有办法在同一个类中创建一个方法来检索我创建的所有objets?我想创建类似static ArrayList <A>的东西来添加它们,但我想我不能在同一个类中完成它。

2 个答案:

答案 0 :(得分:2)

public class A {
    private static List<A> createdAs = new ArrayList<>();

    public A() {
        synchronized(createdAs) {
            createdAs.add(this);
        }
    }
}

但是,正如Luiggi所说,这可能是一个非常糟糕的主意,并且可能有一种更清洁的方法来解决您的问题。例如,这导致一个大问题是它导致内存泄漏:即使没有人再使用它们,也不会对所创建的As进行垃圾收集,因为它们都被静态列表引用。

答案 1 :(得分:1)

是的,只需记录您创建的内容:

class A {
    private static List<A> instances = new ArrayList<A>();

    public A() {
        instances.add(this)
    }

    public static List<A> getInstances() {
        return Collections.unmodifiableList(instances);
    }
}