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