[英]How to call a constructor from another class using the argument for a method in the current class?
我需要能夠根據方法newInstance(String kind)的輸入來調用繼承類的構造函數。我的代碼當前如下所示:
public class Animal {
public String kind;
public String integument;
protected Animal(){
}
public Animal newInstance(String kind){
kind x = new kind();
return x;
}
因此,例如,如果放入的String是“ owl”,我希望它調用我先前創建的owl類中的構造函數並創建一個新的owl實例。 貓頭鷹類看起來像:
public class Owl extends Bird{
public Owl(){
this.kind = "owl";
}
public void newOwl(){
}
@Override
public String sound(){
return "'Hoot'";
}
}
現在,我得到一個錯誤消息,“找不到類種類”,因為它正在尋找一個稱為種類的類,而不是等待輸入並尋找一個與字符串輸入相同的類。
如何重寫此代碼,以便該方法中的輸入將按該名稱查找類並創建該類型的新對象? 謝謝!
您可能想要完全在另一個類中使用Factory ,或者將其作為Animal
的靜態方法使用:
public class Animal {
public static Animal getInstance(final String kind) {
if(kind== null) {
throw new IllegalArgumentException("Must provide a name");
}
switch(kind.toLowerCase()) {
case "owl": return new Owl();
case "deer": return new Deer();
default: throw new IllegalArgumentException("Can't create a " + kind);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.