我知道在Java中,Integer是一个不可变对象。但我需要一种方法来改变方法中的整数并查看方法之外的变化。 例如:
int getInt(){
int my_int=0;
test(my_int);
}
void test(int i){
i=3;
}
我希望看到getInt
的输出为3
而不是0
。
有没有办法做到这一点?
我的方法比我写的更复杂,它会返回另一个对象。这就是为什么我想改变输入中的int并且不返回它的原因。
答案 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);
之类的东西。