0

親クラスオブジェクトからすべての子クラスオブジェクトを取得し、マップに配置する方法 java spring

 public static Map<String, Object> ConvertObjectToMap(Object obj, Integer number) throws            IllegalAccessException, IllegalArgumentException, InvocationTargetException {
    Class<?> pomclass = obj.getClass();
    pomclass = obj.getClass();
    Method[] methods = obj.getClass().getMethods();
    Map<String, Object> map = new HashMap<String, Object>();
    for (Method m : methods) {
        if (m.getName().startsWith("get") && !m.getName().startsWith("getClass")) {
            Object value = null;
            value = (Object) m.invoke(obj);
            if (number <= 1) {
                if (value.getClass().isAnnotation()) {
                    map.putAll(ConvertObjectToMap(value, number++));
                } else {
                    map.put(m.getName().substring(3), (Object) value);
                }
            }
        }
    }
    return map;
}

これは正しいです ?

4

1 に答える 1

0

したがって、私があなたを正しく理解していれば、プロパティ名からその値へのマップが必要です。

これを自分で書く代わりに、commons-beanutils を使用するのはどうですか? の線に沿った何か

import org.apache.commons.beanutils.PropertyUtils;

public static Map<String, Object> ConvertObjectToMap(Object obj, Integer number) throws            IllegalAccessException, IllegalArgumentException, InvocationTargetException {
    return PropertyUtils.describe(obj);
}

上記のコードはすべてのゲッターを呼び出すため、それはあなたのものと同じになります。"class" プロパティをフィルタリングしたい場合は、describe によって返されたマップで .remove("class") を呼び出すだけです。

詳細: commons-beanutils ホームページ

于 2012-10-18T11:31:53.377 に答える