有时候需要获取对象的属性值,属性少的话就好设置了,属性一多就不好设置了。
我们可以通过反射来遍历
代码语言: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;
}