分析:
| 方法 | 功能 |
|---|---|
| getFields() | 获取所有public字段,包括父类字段 |
| getDeclaredFields() | 获取所有字段,public和protected和private,但是不包括父类字段 |
1.将实体类bean转换成map(拿到属性及属性值put到map中):
public static Map<String,Object> objToMap(Object o) {
Map<String, Object> map = Maps.newHashMap();
Field[] fields = o.getClass().getDeclaredFields();
for (Field field : fields) {
try {
field.setAccessible(true);
map.put(field.getName(), field.get(o));
} catch (Exception e) {
log.error("反射错误,错误字段名为【{}】", field.getName(), e);
}
}
return map;
}
特点:作为参数传进来的bean对象如果有父类,那么上面那个方法则不能获取父类的属性及属性值,可如下操作:
通过bean.class.getSuperclass()拿到父类的class(以下能拿到子类及父类的所有私有属性)
List<Field> fieldList = new ArrayList<>() ;
Class tempClass = Bean.class;
while (tempClass != null) {//当父类为null的时候说明到达了最上层的父类(Object类).
fieldList.addAll(Arrays.asList(tempClass .getDeclaredFields()));
tempClass = tempClass.getSuperclass(); //得到父类,然后赋给自己
}
for (Field f : fieldList) {
Log.d("getAllFields","getFields---"+f.getName());
}

本文介绍如何使用Java反射机制将实体类转换为Map,包括获取所有字段(public、protected、private)的方法,以及如何处理包含父类的实体类。通过遍历类及其父类的字段,可以完整地将对象的属性及其值放入Map中。
575

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



