您的位置:首页 > 编程语言 > Java开发

工具类系列-JavaBean2Map

2016-05-24 19:51 155 查看
package com.syk.utils.bean;

import java.beans.BeanInfo;

import java.beans.Introspector;

import java.beans.PropertyDescriptor;

import java.lang.reflect.Method;

import java.util.HashMap;

import java.util.Map;

public class JavaBean2Map {

    /**

     * Bean --> Map 1: 利用Introspector和PropertyDescriptor 将Bean --> Map

     * @param obj

     * @return

     */

    public Map<String, Object> transBean2Map(Object obj) {  

          

        if(obj == null){  

            return null;  

        }          

        Map<String, Object> map = new HashMap<String, Object>();  

        try {  

            BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());  

            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();  

            for (PropertyDescriptor property : propertyDescriptors) {  

                String key = property.getName();  

 

                // 过滤class属性  

                if (!key.equals("class")) {  

                    // 得到property对应的getter方法  

                    Method getter = property.getReadMethod();  

                    Object value = getter.invoke(obj);  

 

                    map.put(key, value);  

                }  

 

            }  

        } catch (Exception e) {  

            System.out.println("transBean2Map Error " + e);  

        }  

 

        return map;  

 

    }  

    

//    // Map --> Bean 2: 利用org.apache.commons.beanutils 工具类实现 Map --> Bean  

//    public static void transMap2Bean2(Map<String, Object> map, Object obj) {  

//        if (map == null || obj == null) {  

//            return;  

//        }  

//        try {  

//            BeanUtils.populate(obj, map);  

//        } catch (Exception e) {  

//            System.out.println("transMap2Bean2 Error " + e);  

//        }  

//    }  

 

    // Map --> Bean 1: 利用Introspector,PropertyDescriptor实现 Map --> Bean  

    public static void transMap2Bean(Map<String, Object> map, Object obj) {  

 

        try {  

            BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());  

            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();  

 

            for (PropertyDescriptor property : propertyDescriptors) {  

                String key = property.getName();  

 

                if (map.containsKey(key)) {  

                    Object value = map.get(key);  

                    // 得到property对应的setter方法  

                    Method setter = property.getWriteMethod();  

                    setter.invoke(obj, value);  

                }  

 

            }  

 

        } catch (Exception e) {  

            System.out.println("transMap2Bean Error " + e);  

        }  

 

        return;  

 

    }  

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: