国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

實體類與Map互轉工具類

2019-11-06 06:35:01
字體:
來源:轉載
供稿:網友
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;  import java.util.TreeMap;    import com.yfapp.platform.pojo.QxmenuPojo;    /**  * @文件名:ZJ_BeanToMapUtils.java  * @作用:  * @作者:張劍  * @創建時間:2014年3月6日  */  public class ZJ_BeanToMapUtils {      /**      * 將一個 Map 對象轉化為一個 JavaBean      * @param clazz 要轉化的類型      * @param map 包含屬性值的 map      * @return 轉化出來的 JavaBean 對象      * @throws IntrospectionException 如果分析類屬性失敗      * @throws IllegalaccessException 如果實例化 JavaBean 失敗      * @throws InstantiationException 如果實例化 JavaBean 失敗      * @throws InvocationTargetException 如果調用屬性的 setter 方法失敗      */      @SuppressWarnings("rawtypes")      public static <T> T toBean(Class<T> clazz, Map map) {          T obj = null;          try {              BeanInfo beanInfo = Introspector.getBeanInfo(clazz);              obj = clazz.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);                      if ("".equals(value)) {                          value = null;                      }                      Object[] args = new Object[1];                      args[0] = value;                      try {                          descriptor.getWriteMethod().invoke(obj, args);                      } catch (InvocationTargetException e) {                          System.out.println("字段映射失敗");                      }                  }              }          } catch (IllegalAccessException e) {              System.out.println("實例化 JavaBean 失敗");          } catch (IntrospectionException e) {              System.out.println("分析類屬性失敗");          } catch (IllegalArgumentException e) {              System.out.println("映射錯誤");          } catch (InstantiationException e) {              System.out.println("實例化 JavaBean 失敗");          }          return (T) obj;      }        /**      * 將一個 JavaBean 對象轉化為一個 Map      * @param bean 要轉化的JavaBean 對象      * @return 轉化出來的 Map 對象      * @throws IntrospectionException 如果分析類屬性失敗      * @throws IllegalAccessException 如果實例化 JavaBean 失敗      * @throws InvocationTargetException 如果調用屬性的 setter 方法失敗      */      @SuppressWarnings("rawtypes")      public static Map toMap(Object bean) {          Class<? extends Object> clazz = bean.getClass();          Map<Object, Object> returnMap = new HashMap<Object, Object>();          BeanInfo beanInfo = null;          try {              beanInfo = Introspector.getBeanInfo(clazz);              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;                      result = readMethod.invoke(bean, new Object[0]);                      if (null != propertyName) {                          propertyName = propertyName.toString();                      }                      if (null != result) {                          result = result.toString();                      }                      returnMap.put(propertyName, result);                  }              }          } catch (IntrospectionException e) {              System.out.println("分析類屬性失敗");          } catch (IllegalAccessException e) {              System.out.println("實例化 JavaBean 失敗");          } catch (IllegalArgumentException e) {              System.out.println("映射錯誤");          } catch (InvocationTargetException e) {              System.out.println("調用屬性的 setter 方法失敗");          }          return returnMap;      }        public static void main(String[] args) {          Map<Object, Object> map = new TreeMap<Object, Object>();          map.put("fsf", 1);          map.put("sss", "1");          System.out.println(map);          QxmenuPojo p = new QxmenuPojo();          p.setId(111);          p.setIcon("dddddd");          @SuppressWarnings("unchecked")          Map<Object, Object> m = toMap(p);          QxmenuPojo p2 = toBean(QxmenuPojo.class, m);          System.out.println(p);          System.out.println(p2);          System.out.println(m);        }  }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉水县| 花莲市| 江西省| 靖州| 万年县| 南溪县| 舒城县| 湖南省| 兴业县| 镇康县| 蒙山县| 宜宾县| 玛曲县| 和平县| 浮梁县| 旬邑县| 南溪县| 富裕县| 蕉岭县| 五指山市| 民县| 高雄市| 龙泉市| 郓城县| 彭泽县| 潜山县| 若尔盖县| 南投县| 大新县| 梧州市| 方山县| 伊金霍洛旗| 桂东县| 湟源县| 安溪县| 贡山| 沅陵县| 邹城市| 眉山市| 韶山市| 稻城县|