在日常工作中我们需要将一个对象拷贝,而苦于深拷贝.这里我们提供一个第三方的工具包.
依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.10</version>
</dependency>
条件
被拷贝的类必须实现java.io.Serializable接口
方法
Object copy = cn.hutool.core.util.ObjectUtil.cloneByStream(被拷贝对象);
在我们日常开发中,经常使用的对象拷贝,比如Apache的BeanUtils,Spring的BeanUtils.下面我要说的是cglib的BeanCopier,它的性能在同类功能中几乎是最高最好的.
# API
net.sf.cglib.beans.BeanCopier#create
net.sf.cglib.beans.BeanCopier#copy
例如,将buyer对象的属性值拷贝到copy对象
Buyer buyer = new Buyer();
BeanCopier beanCopier = BeanCopier.create(Buyer.class, Buyer.class, false);
Buyer copy = new Buyer();
beanCopier.copy(buyer, copy, null);
但是cglib的BeanCopier的适用有个局限性.
1.适用相同类型的两个类
2.适用不同类型的两个类,但只拷贝属性相同的,属性不同拷贝
公众号