場景:需要對某個集合中的所有元素拷貝到另一個集合中,想着BeanUtils.copyProperties()可以深拷貝對象,誤以為也可以拷貝集合,於是乎寫下了如下代碼
List<CostRule> meetCostRuleList = Lists.newArrayList();
BeanUtils.copyProperties(partItemRuleList, meetCostRuleList);
以上的操作結果不會報錯,但是 meetCostRuleList 集合仍是一個空集合;由於業務復雜,該塊沒有被測試到,上線初了問題,后來更改為
List<CostRule> meetCostRuleList = Lists.newArrayList();
partItemRuleList.forEach(costRule -> meetCostRuleList.add(costRule));
謹記:BeanUtils.copyProperties只對bean屬性進行復制,這里的復制屬於淺復制。且不能復制集合和數組。BeanUtils.copyProperties利用反射,直接將對象的引用set進去,並不是深拷貝。