最近有一个需求,前端需要获取实体中的属性名和属性值为一个集合,然后方便去遍历,没想到什么特别好的方法,最后用反射获取属性值,去手动拼了一个get方法去查找,请教一下,jy们还有什么更好的方法去实现吗?
public RestMessage <List<SafeManageVo>> getCount() {
SafeManageDto count = safeManageService.getCount();
Field[] declaredFields = count.getClass().getDeclaredFields();
List<SafeManageVo> res = new ArrayList<>();
for (Field field : declaredFields) {
field.setAccessible(true);
SafeManageVo safeManageVo = new SafeManageVo();
safeManageVo.setName(field.getName());
Object num = getFieldValueByName(field.getName(),count);
safeManageVo.setCount(num);
res.add(safeManageVo);
}
return new RestMessage<>(res);}
private static Object getFieldValueByName(String fieldName, Object o) {
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getter = "get" + firstLetter + fieldName.substring(1);
Method method = o.getClass().getMethod(getter, new Class[] {});
Object value = method.invoke(o, new Object[] {});
return value;
} catch (Exception e) {
return null;
}
}