通过反射复制两个具有相同属性的类的实例数据
写项目遇到属性相同的两个类,要从一个类的实例里面获取数据到另外一个类的实例,并保存到数据库
前提是两个实例拥有相同的set和get类
/**
* @Description:通过反射复制具有相同属性的类的实例
* @Param: [obj1, obj2]
* @return:
* @Author: linjing
* @Date:
*/
public void CopyClass(Object obj1,Object obj2){
// obj1实例的数据复制到obj2实例中
//获取传进来的实例的Class
Class class1=obj1.getClass();
Class class2=obj2.getClass();
//获取实例obj2的所有方法并遍历
Method []methods1=class2.getDeclaredMethods();
for (Method i:methods1
) {
// System.out.println(i.getName());
//筛选set方法
if (i.getName().contains("set")){
try {
//将set方法转化为get方法,获取obj1对应类的get方法
Method method=class1.getMethod(i.getName().replace("set","get"));
//invoke()调用get方法获取obj1实例的值,再调用set方法写入到obj2实例中去
i.invoke(obj2,method.invoke(obj1));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
后来发现Spring有自带的拷贝方法BeanUtils.copyProperties(),有需要的可以去了解下