import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Field;
import org.apache.log4j.Logger;
public class BeanUtil {
private static final Logger logger = Logger.getLogger(Logger.class);
/**
* Bean 属性拷贝
*
* @param dest
* @param orig
*/
public static void copyProperties(Object dest,Object orig){
if(orig==null){
logger.error("/n error: copy property error: orig is null");
}
if(dest==null){
logger.error("/n error: copy property error: dest is null");
}
try {
copy(dest,orig);
} catch (Exception e) {
logger.error("/n error: copy property error: "
+ e.toString());
}
}
/**
* 当orig的属性为 null 的就不拷贝到 dest
*
* @param dest
* @param orig
* @throws Exception
*/
private static void copy(Object dest,Object orig) throws Exception {
// 得到两个Class 的所有成员变量
Field[] destFields=dest.getClass().getDeclaredFields();
Field[] origFields=orig.getClass().getDeclaredFields();
// 设置访问权限
AccessibleObject.setAccessible(destFields, true);
AccessibleObject.setAccessible(origFields, true);
Object value=null;
String name=null;
String returnType=null;
for (int i = 0; i < origFields.length; i++) {
name=origFields[i].getName();
returnType=origFields[i].getType().getName();
for (int j = 0; j < destFields.length; j++) {
if(name.equals(destFields[j].getName())&&returnType.equals(destFields[j].getType().getName())){
value=origFields[i].get(orig);
if(value!=null){
destFields[j].set(dest,value);
}
break;
}
}
}
}
}