實現原理
原理 target.set + source的屬性名(source.get + source的屬性名):所有source必須有get方法,target必須有set方法
一、
springframework.beans.BeanUtils.copyProperties(A,B):把A對象的屬性值賦給B對象相應的屬性
commons.beanutils.BeanUtils.copyProperties(A,B):把B對象的屬性值賦給A對象相應的屬性
二、
1、屬性名相同,類型相同 可以被復制
2、基本類型 與 其對應的封裝類型 可以被復制
3、封裝類型 與 其對應的基本類型 可以被復制
4、其他統統不行
三、
如果希望哪個屬性不被復制,使用重載方法
public static void copyProperties(Object source, Object target, String... ignoreProperties) throws BeansException
ignoreProperties傳屬性名稱
四、
BeanUtils.copyProperties對bean屬性進行復制,這里的復制屬於淺復制。且不能復制集合和數組
方法1效率更高
解決方法1;
// 通過JSON工具實現List的復制(不僅僅是List,數組和Map等也可以通過類似方法實現復制,需要有無參構造方法,否則報錯)
如:
import com.alibaba.fastjson.JSON;
List<Dog> A= new ArrayList<>();
List<Dog> B= new ArrayList<>();
B = JSON.parseArray(JSON.toJSONString(A),Dog.class);
方法2:循環BeanUtils.copyProperties來復制
