0

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

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

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

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

谢谢你的帮助!

4

2 回答 2

4

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

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

Map<String, Integer> map = ... 
map.put("branchControlFlow1", 2);
int num = map.get("branchControlFlow1");
于 2013-08-13T20:05:57.050 回答
1

您应该真正使用整数的映射/数组列表。映射是值的键(字符串或任何对象),而列表(数组列表或链表)是 int->Entry。

如果没有,你需要求助于黑暗魔法反射。我将在下面解释这个巫术。对于 1600 年代立法者的头痛、恶心、触电、窒息、溺水、强迫溺水、任何例外、任何损害、偶然或后果性或其他问题,我概不负责。

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

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

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

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

于 2013-08-13T20:07:11.980 回答