Java实例化类类型中的对象



我遇到了一个看似简单的问题,但我很难弄清楚。我的目标是创建一个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);
}

最新更新