创建未知对象 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{
...
}
}
}
}
}
使用Class<T>.newInstance()
例如:
organism.getClass().newInstance()
。
为此,您需要在 class 定义中包含默认构造函数,否则您需要找到构造函数 - 例如:
Constructor constructor = organism.getClass().getDeclaredConstructor(parameterTypes...);
然后像 constructor.newInstance(arguments...);
一样使用它。
也许你可以在 A 中有一个抽象方法 getInstance(),然后让 B 和 C 都实现该方法
我一直在寻找解决我的问题的方法,但我找不到专门针对我的问题的答案。 我有一个抽象的 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{
...
}
}
}
}
}
使用Class<T>.newInstance()
例如:
organism.getClass().newInstance()
。
为此,您需要在 class 定义中包含默认构造函数,否则您需要找到构造函数 - 例如:
Constructor constructor = organism.getClass().getDeclaredConstructor(parameterTypes...);
然后像 constructor.newInstance(arguments...);
一样使用它。
也许你可以在 A 中有一个抽象方法 getInstance(),然后让 B 和 C 都实现该方法