类集合之根据属性名获取属性值

115 阅读1分钟

最近有一个需求,前端需要获取实体中的属性名和属性值为一个集合,然后方便去遍历,没想到什么特别好的方法,最后用反射获取属性值,去手动拼了一个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;
    }
  }