天天看点

通过反射克隆对象,对象复制(克隆)工具类

       最近做的项目中,经常会遇到用视图来操作数据库的,但是页面需要的则是某个实体对象,在controller层查出list<view> 还要把将view对象转化成entity对象。需要写一大堆的get和set方法,而且如果实体增删字段的话,还需要把转化代码再修改一下,让人头疼。

       当我需要操作一个实体对象完成两件不同的事情,这2个方法中会修改实体对象中的属性,第一个方法调用后,再调用第二个方法时,会受影响。为了保证不受影响,必须copy一份属性值一模一样的实体。这时候就需要一个工具类来完成了。

       本着磨刀不误砍柴工的原则,抄起键盘,随手写了一个转换对象的工具类。要求2个对象的字段基本上一致。基本原理就是通过反射,获取set方法,调用源对象的get方法获取源对象的值,再通过目标对象的set方法,将值写入目标对象。具体代码如下:

       提供了3个方法,适用范围都已经在方法上进行了标注,基本上可以满足需要。

       当然,上面提到的问题,并不一定非得用反射来获取,也可以借助json来实现。先将源对象转化为json,然后再将json转化为目标对象。当然要注重解决一下字段不一致时的转化问题。