0

java - 如何从父类对象中获取所有子类对象并放入map 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);
}

上面的代码将调用所有的 getter,所以这和你的一样。如果您想过滤“类”属性,您可以在 describe 返回的地图上调用 .remove("class")。

更多信息:commons-beanutils 主页

于 2012-10-18T11:31:53.377 回答