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