创建未知对象 class

Create object of unknown class

我一直在寻找解决我的问题的方法,但我找不到专门针对我的问题的答案。 我有一个抽象的 Class A 和扩展 class A 的 Class B 和 C。A 和 B 是具体的 classes。 Class A 实现函数,它将被 V 和 C 继承。在这个函数中,我想创建 B 或 C 的新对象 - 问题是我不知道那是哪个对象。

我怎样才能做到这一点?

public void colision(List<Organism> organisms) {

    List<Organism> temp = new ArrayList<Organism>(organisms);
    temp.remove(this);

    for (Organizm organism : temp){
        if (this.location == organizm.getLocation()){
            if (this.getClass().equals(organism.getClass())){ 
                        //here is what I need to figure out
            }
            else{ 
                ...
                }
            }
        }
    }
}

使用Factory design pattern

使用Class<T>.newInstance() 例如: organism.getClass().newInstance()。 为此,您需要在 class 定义中包含默认构造函数,否则您需要找到构造函数 - 例如: Constructor constructor = organism.getClass().getDeclaredConstructor(parameterTypes...); 然后像 constructor.newInstance(arguments...); 一样使用它。

也许你可以在 A 中有一个抽象方法 getInstance(),然后让 B 和 C 都实现该方法