【Util】java copy bean 反射
2016-01-20 17:31
471 查看
@SuppressWarnings("unchecked") public <S, T> T copySuperBean(Object source, Class<T> target) throws InstantiationException, IllegalAccessException{ if (source == null) { return null; } if (target == null) { target = (Class<T>) source.getClass(); } T newBean = target.newInstance(); Class<? extends Object> ss = source.getClass(); Class<?> ann = ss.getSuperclass(); if (ann.newInstance() instanceof BaseMsg && newBean instanceof WechatMessage) { Field[] fields = ann.getDeclaredFields(); for (Field field : fields) { Object value = null; String name = field.getName(); String upperName = name.substring(0, 1).toUpperCase() + name.substring(1); try { String getName = String.format("get%s", upperName); String setName = String.format("set%s", upperName); Method getMethod = source.getClass().getMethod(getName, new Class[] {}); Method setMethod = newBean.getClass().getMethod(setName, new Class[] {field.getType()}); value = getMethod.invoke(source); if (value == null) { continue; } setMethod.invoke(newBean, value); } catch (Exception e) { e.printStackTrace(); } } } return newBean; }
相关文章推荐
- 阿里云Ubuntu服务器上部署JavaWeb项目
- Spring整合JMS(三)——MessageConverter介绍 博客分类:
- C#和JAVA 访问修饰符
- Spring整合JMS(四)——事务管理 博客分类:
- java处理excel的2大框架:jakarta POI和JavaExcelAPI(简称JXL)
- Java继承 子类的内存模型
- Gc日志解析
- 小技巧:java Main中如何等待线程结束
- JAVA线程池的分析和使用
- Spring源码学习20160120
- java cloneable接口及使用场景
- Java中的修饰符说明(public,private,protected,default,final,abstract,static)
- spring的事务传播
- RobotFramework-自定义远程java关键字库能否返回Map类型
- struts配置文件的action
- Java 容器源码分析之ConcurrentHashMap
- Java课后习题——编写程序求100以内的素数并输出
- java关键字volatile
- XSS攻击解决方案
- OpenCV+Java环境搭建