创建类的子类数组

时间:2018-01-12 16:37:47

标签: java class

我试图存储由数组子中的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()时添加?是否可以在不创建新对象的情况下获得完整的数组?

1 个答案:

答案 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的实例。