- 浏览: 59340 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
tenderuser:
xiaoyu1985ban 写道自动装箱是有编译器来实现的,这 ...
Long 的== 与equals -
xiaoyu1985ban:
自动装箱是有编译器来实现的,这个问题我也遇到过。
http:/ ...
Long 的== 与equals -
zhou363667565:
写的很不错。很详细。
在tomcat中使用Realm -
zhuchao_ko:
...
在tomcat中使用Realm -
javamanlcy007:
very good
Java中String数据类型
javabean反射
- 博客分类:
- java
明天公司在看,需重构,代码有点乱,可以实现vo的多层反射为map类型。。中间估计有没考虑到的,明天再细看。。。 反射都用不习惯了。。
/** * */ package ledkk.test; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.logging.Logger; /** * @author ledkk * */ public class Reflection { private static Logger log = Logger.getLogger("Reflection"); /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { VOA a = new VOA(); a.setId(123123L); a.setName("voa"); VOB b = new VOB(); b.setVobName("voB"); a.setVob(b); List<VOB> vobs = new ArrayList<VOB>(); vobs.add(b); a.setVobs(vobs); Map<VOB,String> m = new HashMap<Reflection.VOB, String>(); m.put(b, "hello"); a.setMap(m); Map<String,Object> map = covertObjToMap(a); System.out.println(map.get("name")+" " + map.get("id") + " "+map.get("vob")); Map<String,Object> vob = (Map<String, Object>) map.get("vob"); System.out.println(vob.get("vobName")); System.out.println(map.get("vobs")); System.out.println(map.get("map")); } public static Map<String,Object> covertObjToMap(Object obj)throws Exception{ Map<String,Object> map = new HashMap<String,Object>(); Class clazz = obj.getClass(); Method[] methods = clazz.getMethods(); for(Method method : methods){ String methodName = method.getName(); Class retType = method.getReturnType(); Class[] params = method.getParameterTypes(); if(methodName.startsWith("set")&¶ms.length==1){ Class paramsType = params[0]; Package p = paramsType.getPackage(); String getMethodName = methodName.replaceFirst("set", "get"); if(p!=null){ String packageName = p.getName(); Method getMethod = clazz.getMethod(getMethodName, null); if(getMethod==null){ getMethodName = methodName.replaceFirst("set", "is"); getMethod = clazz.getMethod("", null); if(getMethod==null){ log.info("getMethod is not find !"); continue; } } Object ret = getMethod.invoke(obj, null); String fieldName = methodName.replaceFirst("set", ""); fieldName = Character.toLowerCase(fieldName.charAt(0))+fieldName.substring(1); if(p!=null){ Class retT = ret.getClass(); if(packageName.startsWith("java.util")){ Class[] interfaceClasses = retT.getInterfaces(); if(ret instanceof Collection){ Collection c = (Collection) ret; Collection list = (Collection) retT.newInstance(); for(Object o : c){ list.add(covertObjToMap(o)); } map.put(fieldName, list); continue; } if(ret instanceof Map){ Map c = (Map) ret; Map list = (Map) retT.newInstance(); Set keySet = c.keySet(); for(Object o : keySet){ Object v = c.get(o); Package oP = o.getClass().getPackage(); Package vP = v.getClass().getPackage(); if(oP!=null&&vP!=null){ String opName = oP.getName(); String vPName = vP.getName(); if((opName.startsWith("java.lang")||opName.startsWith("sun."))&&(vPName.startsWith("java.lang")||vPName.startsWith("sun."))){ list.put(o, v); continue; }else if((opName.startsWith("java.lang")||opName.startsWith("sun."))&&!(vPName.startsWith("java.lang")||vPName.startsWith("sun."))){ list.put(o, covertObjToMap(v)); continue; }else if(!(opName.startsWith("java.lang")||opName.startsWith("sun."))&&(vPName.startsWith("java.lang")||vPName.startsWith("sun."))){ list.put(covertObjToMap(o), v); continue; }else if(!(opName.startsWith("java.lang")||opName.startsWith("sun."))&&!(vPName.startsWith("java.lang")||vPName.startsWith("sun."))){ list.put(covertObjToMap(o), covertObjToMap(v)); continue; } } list.put(covertObjToMap(o), covertObjToMap(c.get(o))); } map.put(fieldName, list); continue; } } if(!(packageName.startsWith("java.lang")||packageName.startsWith("sun."))){ Object retObj = covertObjToMap(ret); map.put(fieldName, retObj); continue; } }else{ Object retObj = covertObjToMap(ret); map.put(fieldName,retObj ); continue; } map.put(fieldName, ret); } } } return map; } public static class VOA{ private Long id; private String name; private VOB vob; private List<VOB> vobs; private Map<VOB,String> map; /** * @return the map */ public Map<VOB, String> getMap() { return map; } /** * @param map the map to set */ public void setMap(Map<VOB, String> map) { this.map = map; } /** * @return the vobs */ public List<VOB> getVobs() { return vobs; } /** * @param vobs the vobs to set */ public void setVobs(List<VOB> vobs) { this.vobs = vobs; } /** * @return the id */ public Long getId() { return id; } /** * @param id the id to set */ public void setId(Long id) { this.id = id; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the vob */ public VOB getVob() { return vob; } /** * @param vob the vob to set */ public void setVob(VOB vob) { this.vob = vob; } } public static class VOB{ private String vobName; /** * @return the vobName */ public String getVobName() { return vobName; } /** * @param vobName the vobName to set */ public void setVobName(String vobName) { this.vobName = vobName; } } }
发表评论
-
操作符优先级
2013-02-28 19:53 712log.info(names[i]+":&quo ... -
系统之间的异常处理
2012-07-09 17:14 893今天遇到一个很郁闷的问题,两个子系统之间相互通信,A子系统循环 ... -
Long 的== 与equals
2012-07-05 00:25 2583遇到一个关于Long的问题, Long i = 130L; 经 ... -
HttpClent
2011-07-07 17:43 1095public class UrlDispatcherUti ... -
Swing 设置windows 风格
2011-05-11 21:51 1688try { UIManager.setLookAndFee ... -
Acegi 学习
2011-05-11 17:06 1242ECM(Enterprise content manageme ... -
在tomcat中使用Realm
2011-05-02 01:09 35631、配置JDBC Realm, 在tomcat的server. ... -
更改eclipse默认工作空间
2011-03-29 14:32 1891更改eclipse默认空间 进行 eclipse 目录下的 c ... -
容器中元素的排序 Set,Map ,List
2011-03-18 00:52 1940package collectionSort; im ... -
volatile 整理
2011-03-12 22:13 842一个定义为volatile的变量是说这变量可能会被意想不到地改 ... -
Java 断言整理
2011-03-12 19:06 1675编写代码时,我们总是会做出一些假设,断言就是用于在代码 ... -
JIRA4.0.2安装配置及破解,安装subversion插件
2011-03-09 22:03 2831JIRA4.02安装,破解及中途遇到的问题的解决 ... -
不想说了。。 代理,动态代理
2009-06-24 18:48 882动态代理。。。使用cglib 这个jar文件。。 pack ... -
Servlet过滤器大全
2009-05-24 23:30 1150一、字符编码的过滤器 import javax.ser ... -
Java中String数据类型
2009-05-23 23:46 2560一 Java内存分配形式 ... -
关于建模---耦合度
2009-05-11 00:00 1275最近想单独弄一个小的 ... -
关于java 路径问题
2009-04-28 22:55 775classloader 会从classpath下开始寻找所要找 ... -
编码错误:Invalid byte 2 of 2-byte UTF-8 sequence
2009-03-31 23:45 4591package dom; import java.i ...
相关推荐
找的例子,大概改了改,没怎么做封装,能用的用吧
用map来存取,反射获取from表单里面值。
JavaBean与反射
使用 Java 反射封装 JavaBean <br> 说明:这个程序在没有使用Hiberante时挺有用的 需要一个数据库查询语句 对应的JavaBean的全名(现在是Class,原来Class.getName()) 返回List包含多个JavaBean
我们也想过很多办法解决这个问题,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括表和表字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不...
使用java反射机制封装javabean 项目当中使用的一个通用的方法
java反射实现javabean转json实例代码.docx
1.通过Java反射机制获取JavaBean对象。 2.通过JavaBean全路径字符串获取JavaBean对象。 3.获取JavaBean注解信息
很多公司里面不会用到H 所以只需要用SS不用h 相反来说用jdbc实现H的功能。
Java反射 JavaBean对象自动生成插入,更新,删除,查询sql语句操作.docx
使用反射将json自动装配到javaBean中
简单实现如何不创建简单JavaBean对象,而仅仅利用反射实现向普通JavaBean中set值和get值
供初学反射的开发者提供一个小例子,希望各位多多指点
把一个javabean里面的属性值复制到另外一个javabean中相同的属性值
基于标注和反射机制的通用JavaBean持久化工具类.pdf
将前台传过来的参数,通过request作用域反射到javabean,避免了大量的取值代码
java javabean 设计模式 动态调用方法 反射 通过这个包可以动态调用一些JavaBean 的方法属性
使用Java反射机制,将给定的javaBean转化为Map数类型,以及将Map类型的数据转化为JavaBean
基本介绍使用反射将普通Javabean与map集合的相互转换实例,项目开发时编写自己的转换帮助类,更好满足开发时所需