国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java 利用反射機制,獲取實體所有屬性和方法,并對屬性賦值

2019-11-26 13:13:47
字體:
來源:轉載
供稿:網友

一個普通的實體Person:

private int id;private String name;private Date createdTime;...//其它字段// get set方法...............

現在需要把通過webService傳過來的實體Person里面的所有字段的null值,換成""

實現思路:

1.獲取實體的所有字段,遍歷
2.獲取字段類型
3.調用字段的get方法,判斷字段值是否為空
4.如果字段值為空,調用字段的set方法,為字段賦值

code:

   Field[] field = model.getClass().getDeclaredFields(); // 獲取實體類的所有屬性,返回Field數組    try {      for (int j = 0; j < field.length; j++) { // 遍歷所有屬性        String name = field[j].getName(); // 獲取屬性的名字        name = name.substring(0, 1).toUpperCase() + name.substring(1); // 將屬性的首字符大寫,方便構造get,set方法        String type = field[j].getGenericType().toString(); // 獲取屬性的類型        if (type.equals("class java.lang.String")) { // 如果type是類類型,則前面包含"class ",后面跟類名          Method m = model.getClass().getMethod("get" + name);          String value = (String) m.invoke(model); // 調用getter方法獲取屬性值          if (value == null) {            m = model.getClass().getMethod("set"+name,String.class);            m.invoke(model, "");          }        }        if (type.equals("class java.lang.Integer")) {          Method m = model.getClass().getMethod("get" + name);          Integer value = (Integer) m.invoke(model);          if (value == null) {            m = model.getClass().getMethod("set"+name,Integer.class);            m.invoke(model, 0);          }        }        if (type.equals("class java.lang.Boolean")) {          Method m = model.getClass().getMethod("get" + name);          Boolean value = (Boolean) m.invoke(model);          if (value == null) {            m = model.getClass().getMethod("set"+name,Boolean.class);            m.invoke(model, false);          }        }        if (type.equals("class java.util.Date")) {          Method m = model.getClass().getMethod("get" + name);          Date value = (Date) m.invoke(model);          if (value == null) {            m = model.getClass().getMethod("set"+name,Date.class);            m.invoke(model, new Date());          }        }         // 如果有需要,可以仿照上面繼續進行擴充,再增加對其它類型的判斷      }    } catch (NoSuchMethodException e) {      e.printStackTrace();    } catch (SecurityException e) {      e.printStackTrace();    } catch (IllegalAccessException e) {      e.printStackTrace();    } catch (IllegalArgumentException e) {      e.printStackTrace();    } catch (InvocationTargetException e) {      e.printStackTrace();    }

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安溪县| 盘山县| 巩留县| 太原市| 久治县| 潼南县| 石景山区| 临沂市| 甘洛县| 六枝特区| 玛沁县| 阿坝县| 沙洋县| 普陀区| 台北市| 敦煌市| 三亚市| 克山县| 河北省| 东莞市| 乳山市| 静宁县| 乾安县| 鲁甸县| 尼木县| 安西县| 景泰县| 天镇县| 繁峙县| 上虞市| 肥城市| 张家港市| 万源市| 新化县| 新野县| 卓尼县| 博罗县| 平泉县| 赤水市| 永仁县| 离岛区|