zoukankan      html  css  js  c++  java
  • 利用反射自动封装成实体对象

    利用此方法的时候需要传递的参数的名称,必须以行号结尾,去掉行号就是属性名称,比如页面传递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;
    	}
    
  • 相关阅读:
    1093 Count PAT's(25 分)
    1089 Insert or Merge(25 分)
    1088 Rational Arithmetic(20 分)
    1081 Rational Sum(20 分)
    1069 The Black Hole of Numbers(20 分)
    1059 Prime Factors(25 分)
    1050 String Subtraction (20)
    根据生日计算员工年龄
    动态获取当前日期和时间
    对计数结果进行4舍5入
  • 原文地址:https://www.cnblogs.com/lvxiaowei/p/4227746.html
Copyright © 2011-2022 走看看