在Java中更改整数

时间:2016-06-03 19:51:42

标签: java int immutability

我知道在Java中,Integer是一个不可变对象。但我需要一种方法来改变方法中的整数并查看方法之外的变化。 例如:

int getInt(){
    int my_int=0;
    test(my_int);
}

void test(int i){
    i=3;
}

我希望看到getInt的输出为3而不是0。 有没有办法做到这一点?

我的方法比我写的更复杂,它会返回另一个对象。这就是为什么我想改变输入中的int并且不返回它的原因。

2 个答案:

答案 0 :(得分:0)

你根本做不到。您需要将其包装到能够更改其内容的容器对象中。例如:

class IntWrapper {
  private int value;
  ..
}

或者您可以返回一个新值并将结果分配给它,例如

int x = 10;
x = foo(x);

这基本上等同于你的例子。

答案 1 :(得分:0)

如果参数必须是int原语,则不可能。您可以使用AtomicReference<Integer>

AtomicReference<Integer> iRef = new AtomicReference<>(0);
test(iRef);

void test(AtomicReference<Integer> ref) {
  ref.set(3);
}

这实际上是一种反模式 - 通过查看方法签名通常不会非常清楚你的价值会发生什么。让test返回一个int更清楚,然后有i = test(i);之类的东西。