引用传递问题解决
在写方法时,通常会将基本类型的包装类型,如Integer、Double等作为参数传入方法并返回。其实,这么操作是有很大隐患的。因为这样会导致引用传递,导致和预想的结果不一致。
Double d = 0.0;
public void test1(Double d,String name){
User user = userMaper.getBalanceByName(name);
d = user.getBalance();//结果是500.68
}
Syetem.out.printLn("用户余额是 "+ d);//打印结果是0.0
/*此时就是典型的引用传递*/
这就是典型的引用传递。
解决办法
- 采用对象包装参数并传递给方法去操作,在方法体中,使用对象的get()和set()方法来赋值。
- 采用含有get()和set()的现有封装类为参数,如AtomicInteger或AtomicDouble,在方法体内用get()和set()来赋值或作返回值。