背景
其实不止是SpringBoot项目,其余的很多类型的项目,也都会存在对象复制的相关需求,所以,我们一般都会通过一个工具类来解决这类的需求。
解决方案和相应的工具类
首先我们要确定一件事情,那就是是否是相同属性的对象进行复制,如我们项目中的PO类,和VO类,就是会经常会存在互转的情况。
我们先来看一下相应的工具类吧,这也是我项目正在使用的工具类了。
publicclassCopyUtil{/***多个实体的复制*@paramsource*@paramclazz*@param<T>*@return*/publicstatic<T>List<T>copyList(Listsource,Class<T>clazz){List<T>target=newArrayList<>();if(!CollectionUtils.isEmpty(source)){for(Objectc:source){Tobj=copy(c,clazz);target.add(obj);}}returntarget;}/***单个实体之间的复制*@paramsource*@paramclazz*@param<T>*@return*/publicstatic<T>Tcopy(Objectsource,Class<T>clazz){if(source==null){returnnull;}Tobj=null;try{obj=clazz.newInstance();}catch(Exceptione){e.printStackTrace();}BeanUtils.copyProperties(source,obj);returnobj;}}
这里需要注意一点,复制转换属性,不是直接克隆对象,复制工具类是在两个不同的类型的对象之间进行属性值的复制。
而克隆对象又是另外一种情况,是同样类型对象下的直接克隆,下一篇我们再来说一下克隆的相关工具类。
通过上述复制工具类,我们就可以通过相应的代码调用就可以正常使用了,我也写个示例代码吧,如下:
DemoAdemoA=CopyUtils.copy(demoB,DemoB.class);