自己写了个反射获取对象属性值封装成map的一个方法,
用了发现无法获取父类的,
然后发现使用getSuperclass可以,获取遂记录
代码如下:
/**
* @param params 空map用于返回 和 以后的扩展
* @param vo 带有参数的vo
* @return
*/
public static Map<String, Object> getParamList(Map<String, Object> params, Object vo) {
Field[] vos = vo.getClass().getDeclaredFields();
for (Field field : vos) {
field.setAccessible(true);
try {
if (!StringUtils.isEmpty(field.get(vo))) {
params.put(field.getName(), field.get(vo));
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
Class<?> superclass = vo.getClass();
while (superclass != null) {
superclass = superclass.getSuperclass();
if (superclass.getName().equals("java.lang.Object")) {
break;
}
//获取父类的属性
Field[] superField = superclass.getDeclaredFields();
for (Field field : superField) {
field.setAccessible(true);
try {
if (!StringUtils.isEmpty(field.get(vo))) {
params.put(field.getName(), field.get(vo));
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
return params;
}
getDeclaredFields();//方法为获取 该类的所有字段属性 ,但是不包括父类的
setAccessible(true);//为了访问private修饰的属性
getSuperclass();//获取父类的所有属性
不懂的可以留言。微信17625089935