我有一个包含整数变量名称的字符串,如下所示:
int branchControlFlow1 = 2;
String branchField = "branchControlFlow1";
是否可以使用包含变量名称的字符串 (branchField) 访问变量 branchControlFlow1 的值?
变量“branchControlFlow1”必须是整数类型。
谢谢你的帮助!
您可以使用反射按名称查找字段。
但是,如果您尝试这样做,则 Map 更有可能是最佳选择。
Map<String, Integer> map = ...
map.put("branchControlFlow1", 2);
int num = map.get("branchControlFlow1");
您应该真正使用整数的映射/数组列表。映射是值的键(字符串或任何对象),而列表(数组列表或链表)是 int->Entry。
如果没有,你需要求助于黑暗魔法反射。我将在下面解释这个巫术。对于 1600 年代立法者的头痛、恶心、触电、窒息、溺水、强迫溺水、任何例外、任何损害、偶然或后果性或其他问题,我概不负责。
更严重的是,如果经常调用或在时间关键的代码中调用,这会导致严重的性能损失。通过分配您获得的值而不是每次需要时都获得它来最小化反射。
首先获取类对象的实例。如果该字段在名为 的类中FooClass
,请使用:
Class clazz=FooClass.class;
Field fd=clazz.getField(name);
int val=fd.getInt(myObjectOfFooClass);
您不能对堆栈上的局部变量执行此操作。