利用Java反射快速封装JavaBean属性


1、web开发中,对于页面提交的属性封装到对象属性中着实是件麻烦事,自己写多了也想偷点懒微笑,参照网上其他的一些文章,封装了一个简单的方法,贴上代码

[java]

  1. /** 
  2.  * 对象快速封装的方法 
  3.  *  
  4.  * @param object 需要进行属性封装的对象 
  5.  * @param fields 需要进行封装的属性 
  6.  * @param params 需要进行设置的值 
  7.  */  
  8. public static void encapsulateObject(Object object, String[] fields,  
  9.         Object[] params) {  
  10.     Class<?> cl = object.getClass();  
  11.     for (int i = 0; i < fields.length; i++) {  
  12.         StringBuffer buffer = new StringBuffer();  
  13.         try {  
  14.             Field field = cl.getDeclaredField(fields[i]);  
  15.             // 得到参数类型   
  16.             Class<?> paramType = field.getType();  
  17.             buffer.append("set");  
  18.             buffer.append(fields[i].substring(01).toUpperCase());  
  19.             buffer.append(fields[i].substring(1));  
  20.             Method method = cl.getDeclaredMethod(buffer.toString(),  
  21.                     paramType);  
  22.             method.invoke(object, params[i]);  
  23.         } catch (SecurityException e) {  
  24.             e.printStackTrace();  
  25.         } catch (NoSuchFieldException e) {  
  26.             e.printStackTrace();  
  27.         } catch (NoSuchMethodException e) {  
  28.             e.printStackTrace();  
  29.         } catch (IllegalArgumentException e) {  
  30.             e.printStackTrace();  
  31.         } catch (IllegalAccessException e) {  
  32.             e.printStackTrace();  
  33.         } catch (InvocationTargetException e) {  
  34.             e.printStackTrace();  
  35.         }  
  36.     }  
  37.   
  38. }  
使用一下:

[java]

  1. public static void main(String[] args) {  
  2.     Admin admin = new Admin();  
  3.     String[] method = { "userName""realName""lastLoginTime" };  
  4.     Object[] param = { "dfd""zhangsan",  
  5.             new Timestamp(new Date().getTime()) };  
  6.     encapsulateObject(admin, method, param);  
  7.     System.out.println(admin);  
  8. }  
复写toString(),看一下结果:

[java]

  1. Admin [userName=dfd, realName=zhangsan, password=null, unit=null, lastLoginTime=2011-10-11 13:15:05.593, isdel=0, roles=[]]  

相关内容