疯狂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

  //创建对象实例

  Object object = clazz.newInstance();

  //获取类声明的属性

  Field[] fields = clazz.getDeclaredFields();

  StringBuffer buffer = null;

  //遍历属性,执行封装

  for(int j=0;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;

  }