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