311
技術社區[雲棲]
JavaBean 反射機製實現自動配置數據
聲明:該版本是沒完成的。該博文隻做記錄代碼用
String memberType(String name) throws Exception { return getType(getClass().getField(name)); } public static DiaryInfo parse(JSONObject data) { if (data == null) return null; DiaryInfo info = new DiaryInfo(); String name; Method action; Object value; Iterator<String> keys = data.keys(); try { while (keys.hasNext()) { name = keys.next(); value = data.get(name); action = info.getClass().getMethod("set" + ZHelper.ucfirst(name), String.class); action.invoke(info.getClass(), value); } } catch (JSONException e) { AppException.json(e); } catch (NoSuchMethodException e) { AppException.run(e); } catch (InvocationTargetException e) { AppException.run(e); } catch (IllegalArgumentException e) { AppException.run(e); } catch (IllegalAccessException e) { AppException.run(e); } return info; }
對JAVA 沒什麼經驗,弄出了上麵的代碼,但是被 invoke 的參數類型鬱悶,本來是想寫個同名 Object 參數的 set 方法,然後自己轉換數據類型,但覺得太麻煩了。後來我又想通過獲取類中的 成員變量的類型來動態給 invoke 的參數值,但發現搞不定,很費時間,還是隻有先 if else if 了,不浪費時間了,以後有經驗了再來重寫。
最後更新:2017-04-03 12:55:07