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

  • 2019 年 11 月 11 日
  • 笔记

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

我们可以通过反射来遍历

    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 的方法

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;      }