利用反射自动封装成实体对象

王朝学院·作者佚名  2016-05-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

利用反射自动封装成实体对象利用此方法的时候需要传递的参数的名称,必须以行号结尾,去掉行号就是属性名称,比如页面传递name+rowNo,那么实体对象的属性名应该为name。代码如下

//获取页面数据,自动封装成bean对象public List getObjectList(Class clazz,String[] rowNos) throws Exception{List objList = new ArrayList();for(int i=0;rowNos!=null && i<rowNos.length;i++){//创建对象实例Object object = clazz.newInstance();//获取类声明的属性Field[] fields = clazz.getDeclaredFields();StringBuffer buffer = null;//遍历属性,执行封装for(int j=0;j<fields.length;j++){//获取属性的名字String fieldName = fields[j].getName();//得到参数的名字String paraName = fields[j].getName()+rowNos[i];//如果获取参数值为空则继续循环String value = getValueNull(paraName);if(value==null){continue;} //参数值Object[] paramValue =new Object[1];if(fields[j].getType().toString().equals("class java.lang.String")){paramValue[0]=value;}if(fields[j].getType().toString().equals("class java.lang.Integer")){paramValue[0]=new Integer(value);}if(fields[j].getType().toString().equals("class java.lang.Double")){paramValue[0]=new Double(value);}if(fields[j].getType().toString().equals("class java.util.Date")){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");paramValue[0]=sdf.parse(value);}//参数类型Class[] paramType= {fields[j].getType()}; //得到set方法的名字buffer = new StringBuffer("set"); buffer.append(fieldName.substring(0, 1).toUpperCase()); buffer.append(fieldName.substring(1)); //获取放回 Method method = clazz.getDeclaredMethod(buffer.toString(), paramType); //执行方法 method.invoke(object,paramValue);}//将当前对象放到list中objList.add(object);}return objList;}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航