• Bean与Map的转换 和 Map与Bean的转换


    package com.JUtils.beanConvert;
    
    import java.beans.BeanInfo;
    import java.beans.IntrospectionException;
    import java.beans.Introspector;
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * Bean与Map的转换
     *
     * @since 1.0.0
     */
    public class BeanMapConvert {
        /**
         * Bean转换为Map
         *
         * @param
         * @return String-Object的HashMap
         * @since v1.0.0
         */
    
        public static void main(String[] args) {
            
            //Bean转换为Map
            Berth b = new Berth("45", 55d, 65d, 6565d, 63d, 9666l, 9656l, "fgj");
            Map<String, Object> stringObjectMap = bean2MapObject(b);
            System.out.println("Bean转换为Map  "+stringObjectMap);
    
    
            //Map转换为Bean
            Map<String,Object> map = new HashMap<String,Object>();
            map.put("berthId","berthId");
            map.put("coastBearing",6556d);
            map.put("faceBearing",5645d);
            map.put("lat",6896868d);
            map.put("lon",6868868d);
            map.put("ppdAta",525l);
            map.put("sldAta",66666l);
            map.put("type","fdgfd");
            Berth nn = new Berth();
            Object o = map2Bean(map, nn);
            System.out.println("Map转换为Bean  "+o);
    
        }
        public static Map<String,Object> bean2MapObject(Object object){
            if(object == null){
                return null;
            }
    
            Map<String, Object> map = new HashMap<String, Object>();
            try {
    
                //Introspector类:
                //  将JavaBean中的属性封装起来进行操作。在程序把一个类当做JavaBean来看,
                // 就是调用Introspector.getBeanInfo()方法,得到的BeanInfo对象封装了把这个类当做JavaBean的结果信息,即属性的信息。
    
    
                BeanInfo beanInfo = Introspector.getBeanInfo(object.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(object);
    
                        map.put(key, value);
                    }
                }
            } catch (Exception e) {
               e.printStackTrace();
            }
    
            return map;
        }
    
        /**
         * Map转换为Java Bean
         *
         * @param map
         *              待转换的Map
         * @param object
         *              Java Bean
         * @return java.lang.Object
         */
        public static Object map2Bean(Map map,Object object){
            if(map == null || object == null){
                return null;
            }
            try {
                BeanInfo beanInfo = Introspector.getBeanInfo(object.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(object, value);
                    }
                }
            } catch (IntrospectionException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
            return object;
        }
    }
  • 相关阅读:
    bzoj 4066: 简单题 K-D树
    SAS获取最后一条观测到指定宏
    sas 获取字符串长度实例
    tomcat Error:NB:JAVA_HOME should point to a JDK not a JRE 解决方法
    ODBC数据源管理器-》系统DSN-》没有....Microsoft Access Driver(*mdb,*,accdb)
    SAS DATA ENCODING 解决odbc乱码问题
    sas 日期比较代码备忘
    sas transpose 代码备忘
    svn 红叉叉图标解决方法
    echart line 初始化隐藏legend
  • 原文地址:https://www.cnblogs.com/JonaLin/p/11277366.html
Copyright © 2020-2023  润新知