歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 利用Java反射快速封裝JavaBean屬性

利用Java反射快速封裝JavaBean屬性

日期:2017/3/1 10:39:47   编辑:Linux編程

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(0, 1).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. }
使用一下:

[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=[]]
Copyright © Linux教程網 All Rights Reserved