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;
    	}
    
  • 相关阅读:
    CocoaPods入门到精通
    SDAutoLayout 一行代码搞定自动布局
    iOS 开发实践之Auto Layout(From Vincent Sit)
    web前端开发_清除浮动
    转 使用Autolayout xib实现动态高度的TableViewCell
    有了Auto Layout,为什么你还是害怕写UITabelView的自适应布局?
    Objective-C 相关Category2
    Objective-C 相关Category
    Mac 破解Adobe Photoshop CS6
    leetcode@ [315/215] Count of Smaller Numbers After Self / Kth Largest Element in an Array (BST)
  • 原文地址:https://www.cnblogs.com/lvxiaowei/p/4227746.html
Copyright © 2011-2022 走看看