使用变量名读取变量的值

时间:2013-08-13 20:03:13

标签: java string integer

我有一个包含整数变量名称的字符串,如下所示:

int branchControlFlow1 = 2;
String branchField = "branchControlFlow1";

是否可以使用包含变量名称的字符串(branchField)来访问变量branchControlFlow1的值?

变量“branchControlFlow1”必须是整数类型。

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

您可以使用反射按名称查找字段。

但是,如果您尝试这样做,地图更有可能是最佳选择。

Map<String, Integer> map = ... 
map.put("branchControlFlow1", 2);
int num = map.get("branchControlFlow1");

答案 1 :(得分:1)

你应该 真的 使用整数的地图/ arraylist。地图是值的关键(字符串或任何对象),而列表(arraylist或链表)是int-&gt; Entry。

如果没有,你需要诉诸黑暗魔法反射。我将在下面解释这个巫术。我负责头痛,恶心,触电,窒息,溺水,17世纪立法者强迫溺水,任何例外,任何损害,偶然或后果或其他问题。

更严重的是,如果经常调用或在时间关键代码中调用,会导致严重的性能损失。通过分配您获得的值而不是每次需要时获取它来最小化反射。

首先获取类对象的实例。如果该字段位于名为FooClass的类中,请使用:

Class clazz=FooClass.class;
Field fd=clazz.getField(name);
int val=fd.getInt(myObjectOfFooClass);

您不能对堆栈中的局部变量执行此操作。