簡體   English   中英

如何使用當前類中方法的參數從另一個類調用構造函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM