将字符串输入转换为对象名称的实例(=输入)

Eda*_*rit 9 java string object instanceof

我有很多类,我希望用户键入一个名称,他将获得一个特定对象(类)的同名实例.我用这段代码简化了它:

public class Animal {...}

public class lion extends Animal{...}
public class zebra extends Animal{...} // and so on for a lot of animals

String name = input from user
Animal something = new Animal(instance of the input name)
Run Code Online (Sandbox Code Playgroud)

在最后一行,我实际上想将字符串名称转换为类名的实例.有什么办法吗?会有很多动物,所以我不想写很多开关案例:"如果输入等于狮子"或斑马或蛇或......

Sal*_*lah 1

我建议在这里创建一个Factory类来为您创建合适的实例

例如:

public class AnimalFactory {

    public Animal getAnimal(String input) {
        if(input.equals("lion")) {
            return new lion();
        } else if(input.equals("zebra")) {
            return new zebra();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)