考虑以下代码:

public class Test {

    static private volatile Integer number1 = 42;
    static private volatile Integer number2 = 42;

    public static void main(String[] args) {
        Test test = new Test();
        test.changeInteger(number1);
        System.out.println(number1);
    }

    public void changeInteger (Integer number) {
        number = new Integer(3);
    }
}


我想根据传递给方法number1的参数来更改number2changeInteger的值。显然,这是行不通的。有没有一种方法可以使Java在不使用反射的情况下工作?

澄清一下:我希望呼叫changeInteger(number1)更改字段number1

最佳答案

只是为了补充@Margus的答案。
在我的书中,如果变量名曾经包含数字,例如number1,则表明您的操作不正确。使用数组。

另一方面,如果变量是实际命名的,则最好使用Hashtable
类中字段的名称应进行硬编码。如果您需要非硬编码的“字段名称”,那么它们并不是真正的字段。他们是数据!因此,哈希表/字典是Java中正确的路由。

关于java - 取消引用可能吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25995362/

10-10 22:29