我试图存储由数组子中的super()构造的A的所有子类(在本例中为B)。所有的孩子都在同一个包里。这是我的方法,但我不知道类如何将自己存储在数组中或将自身作为参数传递给super()。
class A {
static int i = 0;
A[] child = new A[10]
int someval;
A(int val){
someval = val;
child[i] = ???;
i++;
}
}
class B extends A{
B(){
super(val);
}
}
这甚至可能吗?使用我的方法B只会在创建新的B()时添加?是否可以在不创建新对象的情况下获得完整的数组?
答案 0 :(得分:3)
public class A {
private static final List<A> instances = new ArrayList<>();
public A() {
instances.add(this);
}
public static List<A> getInstances() {
return instances;
}
}
现在可以随时调用A.getInstances()
,并且将包含任何扩展A的实例。