如何使用当前类中方法的参数从另一个类调用构造函数?

时间:2015-01-18 20:44:00

标签: java

我需要能够根据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'";
}


}

现在我收到一条错误消息,"找不到类的类型"因为它正在寻找一个名为kind的类,而不是等待输入并寻找一个与字符串输入相同的类。

如何重写此代码,以便该方法中的输入将按该名称查找类并创建该类型的新对象?谢谢!

1 个答案:

答案 0 :(得分:3)

您可能想要在Animal完全使用另一个类中的Factory或静态方法:

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);
        }
    }
}