对于如何将实体转化为map的string和object的集合,我使用的是反射和内省的机制。简单的去实现这个功能,可能性能上会有很大问题,我希望能有人给出更好的方式解决问题。
实现代码为:
package com.greya.beanutil;
实现代码为:
package com.greya.beanutil;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class BeanUtil{
public static void main(String[] args) throws Exception {
bean obj=new bean(); //设置测试用的实体
obj.setI(12);
obj.setStr("aaaaa");
Map<String,Object> map=beanToMap(obj); //调用方法
System.out.println(map);
}
public static Map<String,Object> beanToMap(Object obj)throws Exception {
Map<String,Object> map=new HashMap<String,Object>();
Field[] f=obj.getClass().getDeclaredFields(); //得到参数列表
for (Field field : f) { //遍历参数
String paramName=field.getName(); //得到当前参数名称
PropertyDescriptor propDesc=new PropertyDescriptor(paramName,obj.getClass()); //得到该参数内省变量
Method methodGet=propDesc.getReadMethod(); //得到参数的get方法
Object result=methodGet.invoke(obj); //执行get方法
map.put(paramName, result); //存储结果
}
return map;
}
}
以上只针对所有参数均有get方法的情况,对于部分参数有的情况需要优化。