/** * 应用反射(其实工具类底层一样用的反射技术) * 手动写一个 Bean covert to Map */
public static void autoBeanToMap(Map map, Object clazz){
Method[] methods=clazz.getClass().getMethods();
try {
for(Method method: methods){
String methodName=method.getName();//反射获取属性与属性值的方法很多,以下是其一;也可以直接获得属性,不过获取的时候需要用过设置属性私有可见
if (methodName.contains("get")){
//invoke 执行get方法获取属性值
Object value=method.invoke(clazz);
//根据setXXXX 通过以下算法取得属性名称
String key = methodName.substring(methodName.indexOf("get") +3);
Object temp = key.substring(0,1).toString().toLowerCase();
key = key.substring(1);
//最终得到属性名称
key = temp + key;
map.put(key,value);
}
}
}catch (Exception e){
log.error("错误信息:",e);
}
log.info(JSONObject.toJSONString(map));
}
public static void main(String[] args) {
try {
//beanToMap();
User user=new User();
Map keyValues=new HashMap<>();
user.setPassword("password");
user.setComments("test method!");
user.setUserName("wang shisheng");
user.setCreateTime("2018-12-12");
autoBeanToMap(keyValues,user);
}catch (Exception e) {
e.printStackTrace();
}
}
jar:
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>