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的工具也可以简单的实现上述功能,不过就需要引入依赖.