Java 创建一个名称存储在字符串变量中的变量
比如说: 我有一个类Animal,我想创建一个名为Java 创建一个名称存储在字符串变量中的变量,java,string,class,instance,instance-variables,Java,String,Class,Instance,Instance Variables,比如说: 我有一个类Animal,我想创建一个名为“bird”的类实例。 “bird”存储在字符串中 怎么做 String variable_name = "bird"; 我想使用变量_name中的字符串作为动物的实例 Animal bird = new Animal(); 谢谢…在动物中添加名称作为字段,并在构造函数中请求它 class Animal { String name; public Animal(String name) { this.nam
“bird”
的类实例。
“bird”
存储在字符串中
怎么做
String variable_name = "bird";
我想使用变量_name中的字符串作为动物的实例
Animal bird = new 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");
您可以通过反射来实现这一点
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<String, Animal> animals = new HashMap<String, Animal>();
animals.put("animal3", anAnimal);
assert animals.get("animal3") == anAnimal;
Map动物=新HashMap();
动物。put(“动物3”,动物);
断言动物。获取(“动物3”)==动物;
不太清楚你在问什么。您想在动物
中有一个字段,当访问该字段时将返回“bird”
,还是想让动物
的实际实例名称基于字符串中的某个值,在这种情况下,bird
?我想使用variable\u name中存储的字符串作为Animaldo类型的新变量。您想实例化一个新的Animal
并将其分配给名为“variable\u name”的字段吗?将其分配给名为“variable\u name”的字段为什么要使用该字符串来确定变量名称?局部变量的名称不会影响声明它的块之外的代码。例如:Animal deer=new Animal(“deer”);在您的示例中,您编写了动物鹿。但是我想使用variable_name中存储的字符串作为Animal类型的新变量,比如:string variable_name=“deer”;动物变量_name=新动物();总的来说,反射不值得费心。我同意,这就是为什么我建议用地图来按名称存储对象。实际上这是个好主意。