Mick.987

相信开源,才是未来的春天!

 

java类型反射

    private Object setValueFromJson(JSONObject jsonObj, Object object)
            throws IllegalArgumentException, IllegalAccessException,
            InvocationTargetException, ParseException {
        if (jsonObj == null || object == null || jsonObj.length() == 0) {
            return null;
        }
        Method[] methods = object.getClass().getMethods();
        for (Method m : methods) {
            String mName = m.getName();

            if (!mName.startsWith("set")) {
                continue;
            }
            String firstLetter = mName.substring(3, 4);
            String otherLetter = mName.substring(4);

            String name = firstLetter.toLowerCase() + otherLetter;
            String value = jsonObj.optString(name);
            // 从JSON中解析出数据
            if (value.trim().equals("")) {
                continue;
            }

            Class[] parasClass = m.getParameterTypes();

            if (parasClass.length != 1) {
                continue;
            }
            // 判断方法参数类型
            String paraType = parasClass[0].getName();
            if (paraType.equals("java.lang.String")) {
                m.invoke(object, value);
            } else if (paraType.equals("java.lang.Integer")) {
                m.invoke(object, Integer.parseInt(value));
            } else if (paraType.equals("java.math.Bigdecimal")) {
                m.invoke(object, new BigDecimal(value));
            }
        }
        return object;
    }

 

宝贝网址:

posted on 2012-08-21 20:41  张朋飞  阅读(256)  评论(0编辑  收藏  举报

导航