如何通过使用另一个变量来定义该变量,使一个变量等于0?

时间:2011-11-14 08:21:50

标签: java

在Java中,假设我有两个变量x1xName

如何使用x1

xName等于0?

xName的值为"x1"。如何使用x1更改xName的值?

我有理由不仅将x1更改为0。

编辑:为了澄清,我想使用xName来定义x1。 如果最初x1 = 1。我想基本上这样做 xName = 0.并且x1变为0,因为xName的值为“x1”。  我从来没有碰过它 我只是想知道这是否可能。

3 个答案:

答案 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);
}

显然,代表们并非绝对必要。