我现在正在寻找解决问题的方法,但是找不到适合我问题的答案。
我有一个抽象的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...);
一样使用它。