创建名称存储在字符串变量中的变量



假设:

我有一个类动物,我想创建一个名为 "bird" 的类的实例。 "bird"存储在String中。

怎么做?

String variable_name = "bird";

我想将variable_name中的字符串用作动物的实例。

Animal bird = new Animal();

谢谢。。。

你可以用反射来做到这一点

public class DynamicSetTest {
    private Animal animal1 = null;
    private Animal animal2 = null;
    private Animal animal3 = null;
    public Animal getAnimal1() {
        return animal1;
    }
    public Animal getAnimal2() {
        return animal2;
    }
    public Animal getAnimal3() {
        return animal3;
    }
    public void setField(String name, Animal value) throws Exception {
            Field field = this.getClass().getDeclaredField(name);
            field.set(this, value);
    }
    public static void main(String[] args) throws Exception {
        DynamicSetTest t = new DynamicSetTest();
        Animal anAnimal = new Animal();
        t.setField("animal3", anAnimal);
        assert t.getAnimal3() == anAnimal;
    }
}

请注意,每个可能的名称都有一个字段。如果变量不存在,您还必须处理这种情况。

我想知道您是否想使用 Map 并使用该名称添加对象,例如

Map<String, Animal> animals = new HashMap<String, Animal>();
animals.put("animal3", anAnimal);
assert animals.get("animal3") == anAnimal;

name 添加为 Animal 中的字段,并在构造函数中请求它。

class Animal {
    String name;
    public Animal(String name) {
        this.name = name;
    }
}

然后,当您构建动物用途时:

Animal bird = new Animal("bird");
Animal deer = new Animal("deer");
Animal wumpus = new Animal("wumpus");

相关内容

  • 没有找到相关文章

最新更新