zoukankan      html  css  js  c++  java
  • javabean与map互转

     /**
         * 将一个 JavaBean 对象转化为一个  Map
         * @param bean 要转化的JavaBean 对象
         * @return 转化出来的  Map 对象
      * @throws Exception
         */

        public static Map convertBean(Object bean){
          Map returnMap = new HashMap();
         if(bean==null){
          return returnMap;
         }
            Class type = bean.getClass();
          
            BeanInfo beanInfo;
      try {
       beanInfo = Introspector.getBeanInfo(type);
       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 = null;
         try {
          result = readMethod.invoke(bean, new Object[0]);
         } catch (Exception e) {
          //DevLog.error(type.getName() + "转换成Map出错,方法:" + readMethod.getName(), e);
         }
                     if (result != null) {
                         returnMap.put(propertyName, result);
                     } else {
                         returnMap.put(propertyName, "");
                     }
                 }
             }
      } catch (IntrospectionException e1) {
       DevLog.error(type.getName() + "转换成Map出错:", e1);
      }
           
            return returnMap;
        }

       /**
         * 将一个 Map 对象转化为一个 JavaBean
         * @param type 要转化的类型
         * @param map 包含属性值的 map
         * @return 转化出来的 JavaBean 对象
         * @throws Exception
         */

       public static Object convertMap(Class type, Map map) throws Exception {                 BeanInfo beanInfo = Introspector.getBeanInfo(type); // 获取类属性             Object obj = type.newInstance(); // 创建 JavaBean 对象

            // 给 JavaBean 对象的属性赋值         PropertyDescriptor[] propertyDescriptors =  beanInfo.getPropertyDescriptors();         for (int i = 0; i< propertyDescriptors.length; i++) {             PropertyDescriptor descriptor = propertyDescriptors[i];             String propertyName = descriptor.getName();             if (map.containsKey(propertyName)) {                

          // 下面一句可以 try 起来,这样当一个属性赋值失败的时候就不会影响其他属性赋值。                 Object value = map.get(propertyName);              

                   Object[] args = new Object[1];               

          args[0] = value;                

        descriptor.getWriteMethod().invoke(obj, args);           

      }        

    }         return obj;

        }

  • 相关阅读:
    子矩阵
    [Ahoi2008]Meet 紧急集合
    立体图
    CF933B A Determined Cleanup
    CF746G New Roads
    树的重量
    CF519E A and B and Lecture Rooms
    矩阵
    深入浅出乘法逆元
    20180519模拟赛T2——pretty
  • 原文地址:https://www.cnblogs.com/songyunxinQQ529616136/p/6053847.html
Copyright © 2011-2022 走看看