- 浏览: 61336 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
tenderuser:
xiaoyu1985ban 写道自动装箱是有编译器来实现的,这 ...
Long 的== 与equals -
xiaoyu1985ban:
自动装箱是有编译器来实现的,这个问题我也遇到过。
http:/ ...
Long 的== 与equals -
zhou363667565:
写的很不错。很详细。
在tomcat中使用Realm -
zhuchao_ko:
...
在tomcat中使用Realm -
javamanlcy007:
very good
Java中String数据类型
明天公司在看,需重构,代码有点乱,可以实现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 768log.info(names[i]+":&quo ... -
系统之间的异常处理
2012-07-09 17:14 981今天遇到一个很郁闷的问题,两个子系统之间相互通信,A子系统循环 ... -
Long 的== 与equals
2012-07-05 00:25 2652遇到一个关于Long的问题, Long i = 130L; 经 ... -
HttpClent
2011-07-07 17:43 1175public class UrlDispatcherUti ... -
Swing 设置windows 风格
2011-05-11 21:51 1740try { UIManager.setLookAndFee ... -
Acegi 学习
2011-05-11 17:06 1286ECM(Enterprise content manageme ... -
在tomcat中使用Realm
2011-05-02 01:09 36241、配置JDBC Realm, 在tomcat的server. ... -
更改eclipse默认工作空间
2011-03-29 14:32 1954更改eclipse默认空间 进行 eclipse 目录下的 c ... -
容器中元素的排序 Set,Map ,List
2011-03-18 00:52 1982package collectionSort; im ... -
volatile 整理
2011-03-12 22:13 892一个定义为volatile的变量是说这变量可能会被意想不到地改 ... -
Java 断言整理
2011-03-12 19:06 1731编写代码时,我们总是会做出一些假设,断言就是用于在代码 ... -
JIRA4.0.2安装配置及破解,安装subversion插件
2011-03-09 22:03 2889JIRA4.02安装,破解及中途遇到的问题的解决 ... -
不想说了。。 代理,动态代理
2009-06-24 18:48 926动态代理。。。使用cglib 这个jar文件。。 pack ... -
Servlet过滤器大全
2009-05-24 23:30 1230一、字符编码的过滤器 import javax.ser ... -
Java中String数据类型
2009-05-23 23:46 2609一 Java内存分配形式 ... -
关于建模---耦合度
2009-05-11 00:00 1323最近想单独弄一个小的 ... -
关于java 路径问题
2009-04-28 22:55 820classloader 会从classpath下开始寻找所要找 ... -
编码错误:Invalid byte 2 of 2-byte UTF-8 sequence
2009-03-31 23:45 4631package dom; import java.i ...
相关推荐
在Java编程中,根据JavaBean反射来实现数据的导出,如Excel、XML、PDF和CSV格式,是一种常见的数据处理技术。JavaBean是Java中的一种设计模式,它提供了一种标准的方式来封装对象属性,便于数据操作。反射机制则是...
用map来存取,反射获取from表单里面值。
总之,JavaBean与反射是Java开发中两个重要的概念,前者聚焦于组件化编程和GUI构建,后者则为程序提供了强大的动态能力。理解并熟练运用这两者,将极大地提升开发者在构建复杂应用程序时的灵活性和效率。
使用 Java 反射封装 JavaBean <br> 说明:这个程序在没有使用Hiberante时挺有用的 需要一个数据库查询语句 对应的JavaBean的全名(现在是Class,原来Class.getName()) 返回List包含多个JavaBean
### 利用反射实现JavaBean的自动赋值 在软件开发过程中,特别是在Web应用程序的开发中,经常会遇到需要将表单提交的数据绑定到JavaBean对象上的需求。这可以通过多种方式实现,例如使用Spring MVC等框架的自动绑定...
我们也想过很多办法解决这个问题,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括表和表字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不...
使用java反射机制封装javabean 项目当中使用的一个通用的方法
"Java反射 JavaBean 对象自动...Java反射JavaBean对象自动生成插入、更新、删除、查询sql语句操作是一种功能强大且实用的技术,具有很高的开发价值和应用价值。但是,需要合理使用Java反射机制,避免性能和安全问题。
### Java反射机制实现JavaBean转JSON的详细解析 #### 一、引言 在现代软件开发过程中,数据格式转换是一项非常常见的任务。特别是在处理不同系统之间的数据交换时,JSON(JavaScript Object Notation)因其轻量级...
1.通过Java反射机制获取JavaBean对象。 2.通过JavaBean全路径字符串获取JavaBean对象。 3.获取JavaBean注解信息
5. JavaBean和反射 JavaBean是Java中的一种设计模式,通常用于构建可重用的组件。反射在JavaBean中扮演重要角色,允许工具通过属性的getter和setter方法动态地操作组件。例如,通过反射可以获取JavaBean的所有属性,...
【标题】和【描述】提到的是一个关于使用标注和反射机制来实现JavaBean持久化的技术文章,主要讨论如何创建一个通用的JavaBean持久化工具类,以提高开发效率,减少SQL语句的编写。 【标签】为空,因此无法提供额外...
在 J2EE 系统中, JavaBean 通常用来封装业务逻辑和数据,实现业务逻辑和数据展示的分离,使系统更健壮和灵活。 在本设计中,我们使用 JavaBean 来封装用户名和学号的验证逻辑,使用 jsp+html 来实现显示设计。具体...
这里我们关注的是如何使用反射来向简单的JavaBean对象中设置和获取值,而不必显式地创建这些对象。这个过程涉及到Java的`java.lang.reflect`包中的几个关键类,如`Class`, `Field`, 和 `Method`。 首先,让我们理解...
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法的信息。通过反射,我们可以动态地创建对象、调用方法、访问字段,甚至处理私有成员,这在某些情况下非常...
使用反射将json自动装配到javaBean中
- **反射**:在运行时动态地获取类的信息并操作JavaBean。 - **JSP页面**:在Web开发中,JavaBean可以作为模型层,与JSP视图层进行数据交换。 5. **JavaBean在MVC架构中的角色**: 在MVC架构中,JavaBean作为...
4. 反射机制:JavaBean的属性、事件和方法可以通过反射API动态访问,增强了程序的灵活性。 使用JavaBean的场景: 1. MVC架构:在Model部分,JavaBean用于封装业务逻辑和数据,与View和Controller进行交互。 2. JSP...
例如,它可能有一个静态方法`jsonToJavaBean(String jsonString, Class<T> beanClass)`,这个方法接受一个JSON字符串和目标JavaBean的Class类型,然后使用反射创建并填充JavaBean实例。 5. **优化代码量** 使用...
把一个javabean里面的属性值复制到另外一个javabean中相同的属性值