我现在正在寻找解决问题的方法,但是找不到适合我问题的答案。
我有一个抽象的A类,扩展了A类的B和C类。A和B是具体的类。类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{
                ...
                }
            }
        }
    }
}

最佳答案

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

09-17 18:10