首页 > 代码库 > 利用反射自动封装成实体对象

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

利用此方法的时候需要传递的参数的名称,必须以行号结尾,去掉行号就是属性名称,比如页面传递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 = http://www.mamicode.com/getValueNull(paraName);"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;	}

 

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