1.遍历对象的属性描述符数组,并同是设置map中的值.
public <T> T mapToObject1(Map map, Class<T> type) throws Exception{
T t = type.newInstance();
BeanInfo beanInfo = Introspector.getBeanInfo(t.getClass(), Object.class);
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor pd : pds) {
pd.getWriteMethod().invoke(t,map.get(pd.getName()));
}
return t;
}
2.获取对象的属性列表,反射设置所有map中的值.
public <T> T mapToObject(Map map, Class<T> type) throws IllegalAccessException, InstantiationException {
T t = type.newInstance();
Field[] declaredFields = t.getClass().getDeclaredFields();
for (Field declaredField : declaredFields) {
declaredField.setAccessible(true);
try {
declaredField.set(t,map.get(declaredField.getName()));
} catch (Exception e) {
e.printStackTrace();
}
}
return t;
}
3.将对象中的值设置到Map
public static Map objectToMap(Details details) throws IllegalAccessException {
Map<String, Object> map = new HashMap<>();
Field[] fields = details.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
map.put(field.getName(), field.get(details));
}
return map;
}
以上方法是在不引入第三方工具的时候自己实现对象map转换,一些json的工具也可以简单的实现上述功能,不过就需要引入依赖.
本文介绍如何在不引入第三方库的情况下,使用Java反射API实现对象与Map之间的相互转换。包括三种方法:遍历对象属性描述符设置Map值,通过反射设置对象属性的Map值,以及将对象属性值填充到Map中。此外,提及了JSON工具简化此过程但需引入依赖。
635

被折叠的 条评论
为什么被折叠?



