在Java中,假设我有两个变量x1
和xName
。
如何使用x1
?
xName
等于0?
xName
的值为"x1"
。如何使用x1
更改xName
的值?
我有理由不仅将x1更改为0。
编辑:为了澄清,我想使用xName来定义x1。 如果最初x1 = 1。我想基本上这样做 xName = 0.并且x1变为0,因为xName的值为“x1”。 我从来没有碰过它 我只是想知道这是否可能。
答案 0 :(得分:3)
如果我理解你是否正确,你想将名称包含在xName中的变量设置为0?
如果x1是类的字段,则可以使用反射来设置字段的值。请注意,我没有处理任何异常。
public class ChangeField {
public int x1 = 5;
public int x2 = 7;
public static void main(String[] args) throws Exception {
ChangeField changeField = new ChangeField();
System.out.println("Before " + changeField);
changeField.reset("x1");
System.out.println("After " + changeField);
}
private void reset(String xName) throws Exception {
getClass().getDeclaredField(xName).setInt(this, 0);
}
@Override
public String toString() {
return String.format("x1=%1$s x2=%2$s", x1, x2);
}
}
答案 1 :(得分:2)
使用反射。这是official tutorial。
答案 2 :(得分:0)
根据您可以更改代码的数量,您可能只想尝试Map:
Map<String, Integer> mappings = new HashMap<String, Integer>();
mappings.put(xName, x1);
// delegates setting the value to the Map
void setValue(String variableName, int variableValue) {
this.mappings.put(variableName, variableValue);
}
// delegates getting the value to the Map.
void getValue(String variableName) {
return this.mappings.get(variableName);
}
显然,代表们并非绝对必要。