利用Java反射机制将Bean转成Map

本文介绍了一种使用Java反射机制将Java Bean对象转换为Map的方法。此方法通过遍历Bean的所有字段并调用相应的getter方法来获取字段值,然后将这些值存储到Map中。这种方法常用于数据转换场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.LinkedHashMap;
import java.util.Map;

public class BeanUtil {
    
    /**Description: 利用Java反射机制将Bean转成Map
     * Create Date: 2014年11月4日上午11:48:26<br/>
     * Author     : cyy <br/>
     * Modify Date: <br/>
     * Modify By  : <br/>
     * @param obj
     * @return
     */
    public static Map<String,Object> transBean2Map(Object obj){  
        Map<String,Object> map = new LinkedHashMap<String,Object>();  
        //key值 应该是 obj类中的属性名,利用反射机制  
        Field[] fields = obj.getClass().getDeclaredFields();  
        for(int i=0; i<fields.length; i++){  
            String field = fields[i].toString();  
            String[] keys = field.split("\\.");  
            String key = keys[keys.length-1];  
            char toUpperCase = (char)(key.charAt(0)-32);  
            String keyUpper = key.replaceFirst(new String(new char[]{key.charAt(0)}) ,new String(new char[]{toUpperCase}) );//key.replace(key.charAt(0),toUpperCase);  
            Method getMethod;  
            try {  
                getMethod = obj.getClass().getDeclaredMethod("get"+keyUpper);//根据 field得到对应的get方法  
                Object value = getMethod.invoke(obj);  
                map.put(key, value);  
            } catch (NoSuchMethodException e) {  
                e.printStackTrace();  
            } catch (SecurityException e) {  
                e.printStackTrace();  
            }catch (IllegalAccessException e) {  
                e.printStackTrace();  
            } catch (IllegalArgumentException e) {  
                e.printStackTrace();  
            } catch (InvocationTargetException e) {  
                e.printStackTrace();  
            }         
        }  
        return map;  
    } 
}

 

转载于:https://www.cnblogs.com/yy123/p/5169194.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值