实现原理
原理 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来复制