Java pass int by reference

By | 2017-06-21
最近写Android App时候发现Java的Integer是不能传引用的:
public static void invokeModify(Integer res){
System.out.println(“invokeModify:”+res.intValue());
Integer res1 = new Integer(100);
res = res1;
System.out.println(“invokeModify:”+res.intValue());
}
public static void main(String[] args){
Integer res = new Integer(1);
invokeModify(res);
System.out.println(“main invoke:”+res.intValue());
}
输出结果为:
invokeModify:1
invokeModify:100
main invoke:1
在Java类中大部分到classes都是来自抽象对象Number,这些对象都是immutable的。当然也可以实现为mutable的(如AtomicInteger, AtomicLong等)
解决:
使用mutable对象, 如int[], AtomicInteger等