閱讀311 返回首頁    go 技術社區[雲棲]


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

  上一篇:go HexConversion 二進製 八進製 十六進製 十進製
  下一篇:go 設計模式六大原則--迪米特法則