如何将Integer包装类传递给java中的方法?

3 java parameters methods reference

在Java中的Ex:

class A {
    private Integer x = new Integer(0);

    public void setValue(Integer q) {
        q = 20;
    }

    public void callX() {
       setValue(x);        // this does not set x to be 20, which is what i need. Is there a way?
    }
}
Run Code Online (Sandbox Code Playgroud)

axt*_*avt 9

你不能.

包装器类型是不可变的,因此它们有效地模拟基本类型的行为:通过执行q = 20使参数q指向Integer带有值的新intstance 20,但它不会更改x调用方法中引用的原始实例.


Whi*_*g34 8

你可以使用AtomicInteger它,它是可变的:

private AtomicInteger x = new AtomicInteger(0);

public void setValue(AtomicInteger q) {
    q.set(20);
}

public void callX() {
    setValue(x);
}
Run Code Online (Sandbox Code Playgroud)