首页 > 学院 > 开发设计 > 正文

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

2019-11-14 22:36:47
字体:
来源:转载
供稿:网友
利用反射自动封装成实体对象

利用此方法的时候需要传递的参数的名称,必须以行号结尾,去掉行号就是属性名称,比如页面传递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;}


上一篇:Java内部类

下一篇:Java异步回调

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表