一、相关知识
PropertyDescriptor,可通过存储器导出JavaBean类的属性。主要方法:
- getPropertyType(),获得属性的Class对象;
- getReadMethod(),获得用于读取属性值的方法;
- getWriteMethod(),获得用于写入属性值的方法;
- setReadMethod(Method readMethod),设置用于读取属性值的方法;
- setWriteMethod(Method writeMethod),设置用于写入属性值的方法。
ReflectionUtils, Spring针对反射提供的工具类。
二、代码实现
/**
* 将一个对象的字段映射到一个Map中
* @param obj 指定的对象
* @param <T> 对象泛型
* @return 构造好的map
*/
public static <T> Map<String, Object> ObjToMap(T obj) {
Map<String, Object> map = new HashMap<>();
Class clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields(); // 获取对象的字段
for (Field field : fields) {
field.setAccessible(true); // 设置私有字段可访问
try {
PropertyDescriptor pd = new PropertyDescriptor(field.getName(), clazz);
Method method = pd.getReadMethod();
Object value = ReflectionUtils.invokeMethod(method, obj);
map.put(field.getName(), value);
} catch (IntrospectionException e) {
e.printStackTrace();
}
}
return map;
}
网友评论