是否可以将int
变量的名称存储在字符串中并使用该字符串作为参数来更新int
?
问问题
3013 次
3 回答
4
是的,这叫做反射。
您对Field类感兴趣。
例子:
static class A {
public int x = 0;
}
public static void main(String[] args) throws Exception {
A a = new A();
Field f = A.class.getField("x");
f.set(a, 5);
System.out.println(a.x);
}
请注意,尽管这是可能的——除了极少数情况,不建议使用反射,但它有一些主要缺点(可维护性、安全性、性能......)——这使得替代方案通常是更好的选择。
于 2012-10-21T22:04:06.050 回答
3
在这种情况下使用反射将是矫枉过正。您可以通过简单地使用来获得预期的行为Map
:
Map<String, Integer> variables = new HashMap<String, Integer>();
然后映射的键将是变量名,值是实际值:
variables.put("var1", 10);
variables.put("var2", 20);
稍后,您将检索如下值:
Integer n1 = variables.get("var1"); // n1 == 10
Integer n2 = variables.get("var2"); // n2 == 20
如果您需要更新值:
variables.put("var1", variables.get("var1") + 32);
Integer n3 = variables.get("var1"); // n3 == 42
于 2012-10-21T22:06:17.663 回答
2
您的问题的上下文尚不清楚- aMap<String, Integer>
可能会满足您的需要:
Map<String, Integer> map = new HashMap<String, Integer> ();
map.put("int1", 1);
map.put("int2", 2);
//now retrieve the ints based on their name
int int1 = map.get("int1");
于 2012-10-21T22:06:12.490 回答