基于反射技术实现 Bean 属性拷贝 copyProperties
2008-01-18 10:30
627 查看
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; } } } } }
相关文章推荐
- 利用java反射实现两个具有相同属性bean赋值
- EJB是基于哪些技术实现的_SessionBean和EntityBean的区别_StatefulBean和StatelessBean的区别_JAVA面试题及答案
- 转 利用java反射实现两个具有相同属性bean赋值
- EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。
- Android基于反射技术实现的加减乘除运算示例
- EJB基于哪些技术实现?SessionBean…
- Java反射实现XML数据拷贝到Bean
- 利用java反射实现两个具有相同属性bean赋值
- Java反射—自己实现Bean的拷贝
- 漫谈权限系统之技术策略以及基于RBAC的实现
- 基于 DeepZoom技术的Bing Maps客户端实现研究
- 基于JAVA技术的搜索引擎的研究与实现
- Android基于WIFI实现电脑和手机间数据传输的技术方案研究
- 利用JAVA反射技术查找一个类的所有属性
- 利用Java反射实现JavaBean对象相同属性复制并初始化目标对象为空的属性的BeanUtils
- Spark技术内幕:Master基于ZooKeeper的HighAvailability(HA)源码实现
- 基于SpringSecurity3.x, JasperReport5.x等技术实现仿金蝶权限管理的企业信息管理系统
- 基于ajax与msmq技术的消息推送功能实现代码
- 基于C语言的状态机实现技术
- 手写SpringIoc底层实现代码,基于反射机制