原始对象会受此代码影响吗?

时间:2018-08-07 08:14:48

标签: java

我的一个朋友写了这样的代码:

public AccountModel updateAccountPotential(Long accId) {

    AccountModel accModel = accountDAO.findById(accId);

    this.calculatePotential(accModel);
    return accountDAO.save(accModel);
}

private void calculatePotential(AccountModel accModel) {
    accModel.setPotential(some formula);
}

此方法calculatePotential不返回任何内容,但是对参数字段进行一些操作。会影响updateAccountPotential方法中的原始对象吗?

1 个答案:

答案 0 :(得分:1)

是的,假设setPotential是典型的设置方法,因为传递到updateAccountPotential的值是对该对象的引用。该方法(通过setPotential修改对象的状态(大概)。就像您这样做一样:

AccountModel a = /*...get the account model...*/;
AccountModel b = a;
b.setPotential(/*...*/);
// Both `b` and `a` refer to the same object, and so the state of that object
// is visible whether you go through `b` or `a` to get to it