最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

    <rp id="o8oou"><dfn id="o8oou"></dfn></rp>

    1. <sup id="o8oou"></sup>

        java中實現(xiàn)map與對象相互轉(zhuǎn)換的幾種實現(xiàn)

         更新時間:2020年07月10日 11:11:48   作者:流云一號  
        這篇文章主要介紹了java中實現(xiàn)map與對象相互轉(zhuǎn)換的幾種實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

        最近,研究map與java對象之間的相互轉(zhuǎn)換,總結(jié)了5種方法:

        第一種:使用org.apache.commons.beanutils轉(zhuǎn)換

        用到的主要jar包:commons-beanutils-1.9.3.jar

        //map轉(zhuǎn)java對象
        public static Object mapToObject(Map<String, Object> map, Class<?> beanClass)
          throws Exception {
         if (map == null) {
          return null;
         }
         Object obj = beanClass.newInstance();
         BeanUtils.populate(obj, map);
         return obj;
         }
         
        //java對象轉(zhuǎn)map
        public static Map<?, ?> objectToMap(Object obj) {
         if (obj == null)
          return null;
         return new BeanMap(obj);
         }
        

        在使用該方法進行java對象轉(zhuǎn)map時,可能會發(fā)生以下錯誤:

        Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections/Transformer
         at java.lang.ClassLoader.defineClass1(Native Method)
         at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
         at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
         at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
         at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
         at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
         at org.apache.commons.beanutils.BeanMap.createTypeTransformers(BeanMap.java:132)
         at org.apache.commons.beanutils.BeanMap.<clinit>(BeanMap.java:68)
         at com.example2.pojo.PojoToMap.objectToMap(PojoToMap.java:23)
         at com.example2.pojo.PojoToMap.main(PojoToMap.java:16)
        Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.Transformer
         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
         ... 16 more

        解決方法見本人的另一篇文章:http://m.fzitv.net/article/190471.htm

        第二種:使用Introspector轉(zhuǎn)換

        //map轉(zhuǎn)java對象
        public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {
            if (map == null)
              return null;
            Object obj = beanClass.newInstance();
            BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
            for (PropertyDescriptor property : propertyDescriptors) {
              Method setter = property.getWriteMethod();
              if (setter != null) {
                setter.invoke(obj, map.get(property.getName()));
              }
            }
            return obj;
          }
         
        //java對象轉(zhuǎn)map
        public static Map<String, Object> objectToMap(Object obj) throws Exception {
         if (obj == null) {
         return null;
         }
         Map<String, Object> map = new HashMap<String, Object>();
         BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
         PropertyDescriptor[] propertyDescriptors = beanInfo
          .getPropertyDescriptors();
         for (PropertyDescriptor property : propertyDescriptors) {
         String key = property.getName();
         if (key.compareToIgnoreCase("class") == 0) {
          continue;
         }
         Method getter = property.getReadMethod();
         Object value = getter != null ? getter.invoke(obj) : null;
         map.put(key, value);
         }
         return map;
        }
        

        第三種:使用reflect轉(zhuǎn)換

        //map轉(zhuǎn)java對象
        public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {
            if (map == null) {
              return null;
            }
            Object object = beanClass.newInstance();
            Field[] fields = beanClass.getDeclaredFields();
            for (Field field : fields) {
              int mod = field.getModifiers();
              if (Modifier.isFinal(mod) || Modifier.isStatic(mod)) {
                continue;
              }
              field.setAccessible(true);
              field.set(object, map.get(field.getName()));
            }
            return object;
          }
         
        //java對象轉(zhuǎn)map
        public static Map<String, Object> objectToMap(Object obj) throws Exception {
         if (obj == null) {
         return null;
         }
         Map<String, Object> map = new HashMap<String, Object>();
         Field[] declaredFields = obj.getClass().getDeclaredFields();
         for (Field field : declaredFields) {
         field.setAccessible(true);
         map.put(field.getName(), field.get(obj));
         }
         return map;
        }
        

        第四種:使用net.sf.cglib.beans.BeanMap轉(zhuǎn)換

        用到的主要jar包:cglib-2.2.2.jar

        //map轉(zhuǎn)java對象
        public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {
          Object object = beanClass.newInstance();
          BeanMap beanMap = BeanMap.create(object);
          beanMap.putAll(map);
          return object;
        }
         
        //java對象轉(zhuǎn)map
        public static Map<String, Object> objectToMap(Object obj) {
          Map<String, Object> map = Maps.newHashMap();
          if (obj != null) {
            BeanMap beanMap = BeanMap.create(obj);
            for (Object key : beanMap.keySet()) {
              map.put(key + "", beanMap.get(key));
            }
          }
          return map;
        }
        

        在使用本方法進行map轉(zhuǎn)java對象時,可能會發(fā)生以下錯誤:

        Exception in thread "main" java.lang.NoClassDefFoundError: org/objectweb/asm/Type
         at net.sf.cglib.core.TypeUtils.parseType(TypeUtils.java:184)
         at net.sf.cglib.core.KeyFactory.<clinit>(KeyFactory.java:66)
         at net.sf.cglib.beans.BeanMap$Generator.<clinit>(BeanMap.java:64)
         at net.sf.cglib.beans.BeanMap.create(BeanMap.java:56)
         at com.example2.pojo.MapToPojo.mapToBean(MapToPojo.java:27)
         at com.example2.pojo.MapToPojo.main(MapToPojo.java:18)
        Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type
         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
         ... 6 more

        解決方法見本人的另一篇文章:http://m.fzitv.net/article/190474.htm

        第五種:使用json轉(zhuǎn)換

        用到的主要jar包:fastjson-1.2.54.jar

        //map轉(zhuǎn)java對象
        public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {
          String jsonStr = JSONObject.toJSONString(map);
          return JSONObject.parseObject(jsonStr, beanClass);
        }
         
        //java對象轉(zhuǎn)map
        public static Map<String, Object> objectToMap(Object obj) {
          String jsonStr = JSONObject.toJSONString(obj);
          return JSONObject.parseObject(jsonStr);
        }
        

        以上方法本人均實際測試通過。到此這篇關(guān)于java中實現(xiàn)map與對象相互轉(zhuǎn)換的幾種實現(xiàn)的文章就介紹到這了,更多相關(guān)java map與對象相互轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

        相關(guān)文章

        • Win11系統(tǒng)下載安裝java的詳細過程

          Win11系統(tǒng)下載安裝java的詳細過程

          這篇文章主要介紹了Win11如何下載安裝java,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
          2023-05-05
        • IDEA如何對多線程進行debug的示例詳解

          IDEA如何對多線程進行debug的示例詳解

          開發(fā)中使用到多線程的時候不少,但是debug起來還是比較困難的,因為默認每次只會進入一個線程,這樣有些問題是發(fā)現(xiàn)不了的,其實IDEA也是支持進入每個線程來debug的,本文給大家介紹了IDEA如何對多線程進行debug的示例,需要的朋友可以參考下
          2024-05-05
        • Java利用DOM解析XML的學(xué)習(xí)指南

          Java利用DOM解析XML的學(xué)習(xí)指南

          在Java中使用DOM解析XML文件是一個常見的操作,它允許你以編程方式讀取、修改和保存XML文檔的結(jié)構(gòu)和內(nèi)容,本文為大家介紹了具體的實現(xiàn)步驟,有需要的小伙伴可以參考下
          2025-04-04
        • Alibaba?SpringCloud集成Nacos、openFeign實現(xiàn)負載均衡的解決方案

          Alibaba?SpringCloud集成Nacos、openFeign實現(xiàn)負載均衡的解決方案

          Spring?Cloud?Alibaba?致力于提供微服務(wù)開發(fā)的一站式解決方案,此項目包含開發(fā)分布式應(yīng)用微服務(wù)的必需組件,這篇文章主要介紹了Alibaba?SpringCloud集成Nacos、openFeign實現(xiàn)負載均衡,需要的朋友可以參考下
          2024-05-05
        • Spring中Eureka的服務(wù)下線詳解

          Spring中Eureka的服務(wù)下線詳解

          這篇文章主要介紹了Spring中Eureka的服務(wù)下線詳解,根據(jù)默認的策略,如果在一定的時間內(nèi),客戶端沒有向注冊中心發(fā)送續(xù)約請求,那么注冊中心就會將該實例從注冊中心移除,需要的朋友可以參考下
          2023-11-11
        • @PathVariable獲取路徑中帶有 / 斜杠的解決方案

          @PathVariable獲取路徑中帶有 / 斜杠的解決方案

          這篇文章主要介紹了@PathVariable獲取路徑中帶有 / 斜杠的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
          2021-10-10
        • SpringBoot中如何進行全局異常處理方式

          SpringBoot中如何進行全局異常處理方式

          在SpringBoot開發(fā)過程中,全局異常處理能提高程序的魯棒性并降低代碼耦合,通過使用@RestControllerAdvice和@ExceptionHandler注解,可以實現(xiàn)對程序異常的全局攔截和處理,首先需要自定義一個繼承自ResponseEntityExceptionHandler的異常處理類
          2024-11-11
        • Springboot配置Swagger2登錄密碼的實現(xiàn)

          Springboot配置Swagger2登錄密碼的實現(xiàn)

          本文主要介紹了Springboot配置Swagger2登錄密碼的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
          2022-03-03
        • Java的基本數(shù)據(jù)類型和運算方法(必看篇)

          Java的基本數(shù)據(jù)類型和運算方法(必看篇)

          下面小編就為大家?guī)硪黄狫ava的基本數(shù)據(jù)類型和運算方法(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
          2017-07-07
        • SpringBoot實現(xiàn)Mysql使用MD5進行密碼加密的示例

          SpringBoot實現(xiàn)Mysql使用MD5進行密碼加密的示例

          這篇文章主要介紹了SpringBoot實現(xiàn)Mysql使用MD5進行密碼加密的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
          2021-04-04

        最新評論

        大关县| 舟曲县| 册亨县| 左云县| 宜州市| 赣州市| 白山市| 福泉市| 五寨县| 许昌县| 肇州县| 咸丰县| 绥滨县| 阜南县| 南漳县| 年辖:市辖区| 仲巴县| 民权县| 舒兰市| 鄱阳县| 长垣县| 堆龙德庆县| 宜良县| 临洮县| 泾阳县| 永顺县| 凌海市| 彰化县| 常德市| 芜湖县| 陇西县| 湘潭县| 娄烦县| 化州市| 涿州市| 社旗县| 廊坊市| 遵义县| 克拉玛依市| 德保县| 长寿区|