欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java利用反射自动封装成实体对象的方法

程序员文章站 2024-03-01 14:38:40
本文实例讲述了java利用反射自动封装成实体对象的方法。分享给大家供大家参考。具体分析如下: 利用此方法的时候需要传递的参数的名称,必须以行号结尾,去掉行号就是属性名称,...

本文实例讲述了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;
}

希望本文所述对大家的java程序设计有所帮助。