我需要能够根据方法 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;
}
例如,如果输入的字符串是“owl”,我希望它调用我之前创建的 owl 类中的构造函数并创建一个新的 owl 实例。 owl 类看起来像:
public class Owl extends Bird{
public Owl(){
this.kind = "owl";
}
public void newOwl(){
}
@Override
public String sound(){
return "'Hoot'";
}
}
现在我收到一个错误,提示“未找到类种类”,因为它正在寻找名为 kind 的类,而不是等待输入并寻找与字符串输入名称相同的类。
如何重写此代码,以便该方法中的输入将查找该名称的类并创建该类型的新对象?谢谢!
最佳答案
您可能想使用所谓的 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);
}
}
}
关于java - 如何使用当前类中方法的参数从另一个类调用构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28014623/