代码1:
public void addParentAccount(Integer userId, Account account,Set<Account> set) {
AccountingSubClass accountingSubClassQuery = new AccountingSubClass();
accountingSubClassQuery.setClassCode(account.getAccountingSubClassCode());
AccountingSubClass accountingSubClass = accountingSubClassMapper.selectOne(accountingSubClassQuery);
// set=new HashSet<Account>();
if (accountingSubClass != null &&
StringUtils.isNotEmpty(accountingSubClass.getParentCode())) {
AccountingSubClass accountingSubClassParent = getAccountingSubClass(Integer.parseInt(accountingSubClass.getParentCode()));
if (accountingSubClassParent != null) {
if (checkAccountIsExits(userId, account.getAccountCode(),
accountingSubClassParent.getClassCode(), account.getBusinessCode()) == null) {
set.add(getAccount(userId, account.getAccountClassCode(),
accountingSubClassParent.getClassCode(), account.getBusinessCode()));
Account accountTmp = new Account();
BeanUtils.copyProperties(account, accountTmp);
accountTmp.setAccountingSubClassCode(accountingSubClassParent.getClassCode());
addParentAccount(userId, accountTmp,set);
}
}
}
代码2:
public void addParentAccount(Integer userId, Account account,Set<Account> set) { AccountingSubClass accountingSubClassQuery = new AccountingSubClass(); accountingSubClassQuery.setClassCode(account.getAccountingSubClassCode()); AccountingSubClass accountingSubClass = accountingSubClassMapper.selectOne(accountingSubClassQuery); // set=new HashSet<Account>(); if (accountingSubClass != null && StringUtils.isNotEmpty(accountingSubClass.getParentCode())) { AccountingSubClass accountingSubClassParent = getAccountingSubClass(Integer.parseInt(accountingSubClass.getParentCode())); if (accountingSubClassParent != null) { if (checkAccountIsExits(userId, account.getAccountCode(), accountingSubClassParent.getClassCode(), account.getBusinessCode()) == null) { set.add(getAccount(userId, account.getAccountClassCode(), accountingSubClassParent.getClassCode(), account.getBusinessCode())); account.setAccountingSubClassCode(accountingSubClassParent.getClassCode()); addParentAccount(userId, account,set); } } }
代码1set是正确的结果
代码2 set会出现所有数据都一样的集合
由于Account account参数是引用类型调用,当你改变account属性的时候,set集合里相应的对象也会跟着改变。