[英]Java Instantiating an object from a class type
我遇到了一個看似簡單的問題,但我很難弄清楚。 我的目標是創建一個生成器 object,它在被調用時創建一個 object,如下所示:
public class FishSpawner{
public Fish spawnFish(){
return new BlueFish(0, 0);
}
}
這很有效,讓我可以在我的世界的 0,0 坐標處創建藍魚。 But instead of copying this class for each type of Fish I want to spawn I figured i save the type of fish I want to spawn in the constructor and then create an object of that class in the spawn function. 像這樣:
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 已被棄用,它也不允許我將 arguments 傳遞給它的構造函數。 但是我設法用谷歌搜索的所有示例都使用了 newInstance 方法。 這里有人能指出我正確的方向嗎?
您可以通過執行以下操作來實現它
public <T extends Fish> spawnFish(){
Constructor<T> constructor = fishType.getConstructor(Integer.class, Integer.class);
return constructor.newInstance(0, 0);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.