我遇到了一个看似简单的问题,但我很难弄明白。我的目标是创建一个 spawner 对象,该对象在调用时创建一个对象,如下所示:
public class FishSpawner{
public Fish spawnFish(){
return new BlueFish(0, 0);
}
}
这有效,让我可以在我的世界的 0,0 坐标处创建蓝色鱼。但是我没有为我想产卵的每种鱼复制此类,而是想在构造函数中保存我想产卵的鱼的类型,然后在产卵函数中创建该类的对象。 像这样:
public class FishSpawner{
private Class<? extends Fish> fishType;
public FishSpawner(Class<? extends Fish> fishType){
this.fishType = fishType;
}
public Fish spawnFish(){
return fishType.newInstance(0, 0);
}
}
但是这不起作用。它告诉我 newInstance 已被弃用,它也不允许我将参数传递给它的构造函数。但是我设法用谷歌搜索到的所有示例都使用了 newInstance 方法。这里有人能指出我正确的方向吗?
最佳答案
您可以通过执行以下操作来实现它
public <T extends Fish> spawnFish(){
Constructor<T> constructor = fishType.getConstructor(Integer.class, Integer.class);
return constructor.newInstance(0, 0);
}
关于Java 从类类型实例化一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63270477/