bean转化为map

对于如何将实体转化为map的string和object的集合,我使用的是反射和内省的机制。简单的去实现这个功能,可能性能上会有很大问题,我希望能有人给出更好的方式解决问题。
实现代码为:
 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方法的情况,对于部分参数有的情况需要优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值