jun*_*sal 3 java reflection parsing object
我需要编写一个实用程序,它接受一个空白的HashMap和任何对象作为参数并返回HashMap
public HashMap returnMap(HashMap map,Object parseThisObject){
//logic to strip all children, children of children...... and place it in HashMap
//return map
}
Run Code Online (Sandbox Code Playgroud)
这个对象包含很多对象,其中的对象有很多子对象,并且继承了这个对象.
我的实用程序必须足够通用,以递归方式读取所有子项,直到它到达每个对象中的基元,将每个对象放在hasp映射中并将其返回.这就像父母会在地图中出现的那样.但是,个别孩子也会在地图中作为后续条目出现.
我是java反射的新手,我在网上浏览了一些教程和示例.对如何进行不太自信.我相信这是专家和专业人士可能面临的经常需求之一.
请帮助我解决这个问题.如果有任何bean实用程序开源可用吗?如果是的话请告诉我.
这样的事情应该这样做:
public void fillMap(HashMap<String, Object> map, Object bean) {
try {
BeanInfo info = Introspector.getBeanInfo(bean.getClass());
PropertyDescriptor[] props = info.getPropertyDescriptors();
for (int i = 0; i < props.length; i++) {
Method reader = props[i].getReadMethod();
if (reader != null && !props[i].getName().equals("class")) {
Object invoke = reader.invoke(bean, new Object[] {});
if (invoke != null) {
if (!reader.getReturnType().isPrimitive()) {
fillMap(map, invoke);
} else {
map.put(props[i].getName(), invoke);
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
这当然会将所有对象的所有字段放入一个地图中.如果您想要子项的子图,则可能必须为每个递归步骤创建一个映射.如果你需要,我也可以给你这些代码.
没有返回地图,因为传递给该方法的地图已被填充.