我有一个包含整数变量名称的字符串,如下所示:
int branchControlFlow1 = 2;
String branchField = "branchControlFlow1";
是否可以使用包含变量名称的字符串(branchField)来访问变量branchControlFlow1的值?
变量“branchControlFlow1”必须是整数类型。
感谢您的帮助!
答案 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);
您不能对堆栈中的局部变量执行此操作。