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

标签 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;
}

例如,如果输入的字符串是“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/

相关文章:

java - 十六进制字符串到 int 的转换无法正常工作

java - java反射中找不到类

java - 为什么归并排序可以比较两个项目两次?

java - 如何在 Android 中使用 ZBAR 在相机上添加叠加层

java - 无法在单个函数中迭代两个 while 循环

java - 如何将 java 代理附加到远程 JVM

java - 如何在java mysql中获取最后插入的ID作为Long

java - 使用静态方法搜索字符串中的特定字符

java - Main.xml 中的错误

java - 如何更新数据库中类型为 'double'的列?