• JavaBean 和 Map 之间互相转换


    JavaBean 和 Map 之间互相转换

    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;
    
    /**
     * JavaBean and map converter.
     * 
     * 
     */
    public final class BeanMapUtils {
        
        /**
         * Converts a map to a JavaBean.
         * 
         * @param type type to convert
         * @param map map to convert
         * @return JavaBean converted
         * @throws IntrospectionException failed to get class fields
         * @throws IllegalAccessException failed to instant JavaBean
         * @throws InstantiationException failed to instant JavaBean
         * @throws InvocationTargetException failed to call setters
         */
        public static final Object toBean(Class<?> type, Map<String, ? extends Object> map) 
                throws IntrospectionException, IllegalAccessException,    InstantiationException, InvocationTargetException {
            BeanInfo beanInfo = Introspector.getBeanInfo(type);
            Object obj = type.newInstance();
            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
            for (int i = 0; i< propertyDescriptors.length; i++) {
                PropertyDescriptor descriptor = propertyDescriptors[i];
                String propertyName = descriptor.getName();
                if (map.containsKey(propertyName)) {
                    Object value = map.get(propertyName);
                    Object[] args = new Object[1];
                    args[0] = value;
                    descriptor.getWriteMethod().invoke(obj, args);
                }
            }
            return obj;
        }
        
        /**
         * Converts a JavaBean to a map.
         * 
         * @param bean JavaBean to convert
         * @return map converted
         * @throws IntrospectionException failed to get class fields
         * @throws IllegalAccessException failed to instant JavaBean
         * @throws InvocationTargetException failed to call setters
         */
        public static final Map<String, Object> toMap(Object bean)
                throws IntrospectionException, IllegalAccessException, InvocationTargetException {
            Map<String, Object> returnMap = new HashMap<String, Object>();
            BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass());
            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
            for (int i = 0; i< propertyDescriptors.length; i++) {
                PropertyDescriptor descriptor = propertyDescriptors[i];
                String propertyName = descriptor.getName();
                if (!propertyName.equals("class")) {
                    Method readMethod = descriptor.getReadMethod();
                    Object result = readMethod.invoke(bean, new Object[0]);
                    if (result != null) {
                        returnMap.put(propertyName, result);
                    } else {
                        returnMap.put(propertyName, "");
                    }
                }
            }
            return returnMap;
        }
    }
  • 相关阅读:
    20180530
    vue路由配置出错,导致页面跳转会有闪屏问题
    20180528
    vuecli+ivew项目搭建
    centos6安装mysql
    华为云服务ESC
    centos6安装nginx
    国产操作系统aarch64编译filebeat
    Python常见问题
    Git
  • 原文地址:https://www.cnblogs.com/mjorcen/p/3754557.html
Copyright © 2020-2023  润新知