変数の名前を文字列に格納し、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
あなたの質問の文脈は明確ではありません -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");
于 2012-10-21T22:06:12.490 に答える