Java 遍历对象的属性和值,封装返回 Map

2019-11-11 11:26:28 浏览数 (1)

有时候需要获取对象的属性值,属性少的话就好设置了,属性一多就不好设置了。

我们可以通过反射来遍历

代码语言:txt复制
    UpdateWeb updateWeb = new UpdateWeb();

       Field[] fields =  updateWeb.getClass().getDeclaredFields();
    
       for (Field field : fields){
           field.setAccessible(true);
           String key = field.getName();// 获取属性名
           System.out.println(key);
           String method = key.substring(0,1).toUpperCase() key.substring(1);// 将属性首字符大写,方便get & set 方法
           Method setmethod = updateWeb.getClass().getMethod("get" method);// 获取 get 方法
            String value = null;
           try {
               value = (String)setmethod.invoke(updateWeb);// 通过 get 获取值
               System.out.println(value);
           } catch (IllegalAccessException e) {
               e.printStackTrace();
           } catch (InvocationTargetException e) {
               e.printStackTrace();
           }
           System.out.println(value);
       }

然后我们可以封装成 返回 map 的方法

代码语言:txt复制
public static Map<String, Object> BeantoMap(Object object) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        Field[] fields = object.getClass().getDeclaredFields();
        Map<String, Object> map = new HashMap<String, Object>();

        for (Field field:fields) {
            field.setAccessible(true);
            String key = field.getName();
            String method = key.substring(0,1).toUpperCase() key.substring(1);
            Method m = object.getClass().getDeclaredMethod("get" method);
            Object value = m.invoke(object);
            map.put(key,value);
        }
        return map;
    }

0 人点赞