在String中存储int变量的名称

时间:2012-10-21 22:02:55

标签: java string variables int

是否可以在字符串中存储int变量的名称,并将该字符串用作参数来更新int

3 个答案:

答案 0 :(得分:4)

是的,这称为reflection

您对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);
}

请注意,尽管有可能 - 建议不要使用反射,除了极少数情况,它有一些主要的缺点(可维护性,安全性,性能......) - 这使得替代通常更好的选择。

答案 1 :(得分: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

答案 2 :(得分:2)

您的问题的背景不明确 - Map<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");