通过反射完成不同对象之间的属性拷贝
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.List;
/**
* 数据工具类
*/
public class DataUtil {
/**
* 实现属性拷贝
*/
public static void copyProperties(Object src , Object dest){
try {
BeanInfo bi_src = Introspector.getBeanInfo(src.getClass());
Class destClass = dest.getClass();
PropertyDescriptor[] ps = bi_src.getPropertyDescriptors();
for(PropertyDescriptor pp : ps){
Method getter = pp.getReadMethod();
Method setter = pp.getWriteMethod() ;
if(getter != null && setter != null){
Class retType = getter.getReturnType();
Method destSetter = null ;
try {
destSetter = destClass.getMethod(setter.getName(), retType);
} catch (Exception e) {
continue;
}
getter.setAccessible(true);
Object srcValue = getter.invoke(src) ;
destSetter.setAccessible(true);
destSetter.invoke(dest,srcValue) ;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 将属性复制给集合中的每个对象
*/
public static void copyProperites(Object src , List list){
for(Object dest : list){
copyProperties(src,dest);
}
}
}