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

java實(shí)現(xiàn)Object和Map之間的轉(zhuǎn)換3種方式

 更新時(shí)間:2017年06月28日 16:50:53   作者:古越劍簫  
本篇文章主要介紹了java實(shí)現(xiàn)Object和Map之間的轉(zhuǎn)換3種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

利用commons.BeanUtils實(shí)現(xiàn)Obj和Map之間轉(zhuǎn)換,這種是最簡單,也是最經(jīng)常用的

public static Object mapToObject(Map<String, Object> map, Class<?> beanClass)
      throws Exception {
    if (map == null)
      return null;
    Object obj = beanClass.newInstance();
    org.apache.commons.beanutils.BeanUtils.populate(obj, map);
    return obj;
  }

  public static Map<?, ?> objectToMap(Object obj) {
    if (obj == null) {
      return null;
    }
    return new org.apache.commons.beanutils.BeanMap(obj);
  }

利用java reflect完成Obj和Map之間的相互轉(zhuǎn)換

    public Map<String,Object> Obj2Map(Object obj) throws Exception{
      Map<String,Object> map=new HashMap<String, Object>();
      Field[] fields = obj.getClass().getDeclaredFields();
      for(Field field:fields){
        field.setAccessible(true);
        map.put(field.getName(), field.get(obj));
      }
      return map;
    }
    public Object map2Obj(Map<String,Object> map,Class<?> clz) throws Exception{
      Object obj = clz.newInstance();
      Field[] declaredFields = obj.getClass().getDeclaredFields();
      for(Field field:declaredFields){
        int mod = field.getModifiers(); 
        if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){
          continue;
        }
        field.setAccessible(true);
        field.set(obj, map.get(field.getName()));
      }
      return obj;
    }

利用Introspector完成Obj和Map之間的相互轉(zhuǎn)換

public Map<String,Object> obj2Map(Object obj) throws Exception{
      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;
    }
    
    public Object map2Obj(Map<String,Object> map,Class<?> clz) throws Exception{
      if (map == null)  
        return null;  
      Object obj = clz.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;
    }

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java獲取泛型實(shí)際類型的方法詳解

    Java獲取泛型實(shí)際類型的方法詳解

    這篇文章主要介紹了Java獲取泛型實(shí)際類型的方法詳解,泛型,即“參數(shù)化類型”,一提到參數(shù),最熟悉的就是定義方法時(shí)有形參列表,普通方法的形參列表中,每個(gè)形參的數(shù)據(jù)類型是確定的,而變量是一個(gè)參數(shù),需要的朋友可以參考下
    2023-11-11
  • java中List對象列表實(shí)現(xiàn)去重或取出及排序的方法

    java中List對象列表實(shí)現(xiàn)去重或取出及排序的方法

    這篇文章主要介紹了關(guān)于java中List對象列表實(shí)現(xiàn)去重或取出以及排序的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • 使用spring mail發(fā)送html郵件的示例代碼

    使用spring mail發(fā)送html郵件的示例代碼

    本篇文章主要介紹了使用spring mail發(fā)送html郵件的示例代碼,這里整理了詳細(xì)的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-09-09
  • Java利用SpEL表達(dá)式實(shí)現(xiàn)權(quán)限校驗(yàn)

    Java利用SpEL表達(dá)式實(shí)現(xiàn)權(quán)限校驗(yàn)

    這篇文章主要為大家詳細(xì)介紹了Java如何利用SpEL表達(dá)式實(shí)現(xiàn)權(quán)限校驗(yàn)功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • Spring?Boot日志SLF4J和Logback示例詳解

    Spring?Boot日志SLF4J和Logback示例詳解

    這篇文章主要介紹了Spring?Boot日志SLF4J和Logback詳解,Logback相比于Log4j,性能提高了10倍以上的性能,占用的內(nèi)存也變小了,并且文檔十分詳細(xì),推薦使用Slf4j+Logback,需要的朋友可以參考下
    2023-07-07
  • Kotlin中使用Java數(shù)據(jù)類時(shí)引發(fā)的Bug解決方式

    Kotlin中使用Java數(shù)據(jù)類時(shí)引發(fā)的Bug解決方式

    這篇文章主要介紹了Kotlin中使用Java數(shù)據(jù)類時(shí)引發(fā)的一個(gè)Bug,本文給大家分享問題解決方式,感興趣的朋友跟隨小編一起看看吧
    2023-09-09
  • Spring實(shí)戰(zhàn)之類級(jí)別緩存實(shí)現(xiàn)與使用方法

    Spring實(shí)戰(zhàn)之類級(jí)別緩存實(shí)現(xiàn)與使用方法

    這篇文章主要介紹了Spring實(shí)戰(zhàn)之類級(jí)別緩存實(shí)現(xiàn)與使用方法,結(jié)合實(shí)例形式分析了Spring類級(jí)別緩存配置、屬性、領(lǐng)域模型等相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • java、spring、springboot中整合Redis的詳細(xì)講解

    java、spring、springboot中整合Redis的詳細(xì)講解

    這篇文章主要介紹了java、spring、springboot中整合Redis的詳細(xì)講解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 確保SpringBoot定時(shí)任務(wù)只執(zhí)行一次的常見方法小結(jié)

    確保SpringBoot定時(shí)任務(wù)只執(zhí)行一次的常見方法小結(jié)

    在Spring Boot項(xiàng)目中,確保定時(shí)任務(wù)只執(zhí)行一次是一個(gè)常見的需求,這種需求可以通過多種方式來實(shí)現(xiàn),以下是一些常見的方法,它們各具特點(diǎn),可以根據(jù)項(xiàng)目的實(shí)際需求來選擇最合適的方法,需要的朋友可以參考下
    2024-10-10
  • 通過源代碼分析Mybatis的功能流程詳解

    通過源代碼分析Mybatis的功能流程詳解

    這篇文章主要介紹了通過源代碼分析Mybatis的功能,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08

最新評(píng)論

淅川县| 托里县| 广东省| 大荔县| 乌苏市| 岳阳市| 肃宁县| 嘉善县| 双牌县| 同仁县| 承德市| 珲春市| 永靖县| 镇安县| 元朗区| 吉木萨尔县| 韩城市| 曲周县| 凤山市| 安新县| 延长县| 大邑县| 泌阳县| 翁牛特旗| 化德县| 丰台区| 历史| 白银市| 萍乡市| 定兴县| 宣汉县| 政和县| 怀远县| 亚东县| 海宁市| 开江县| 顺平县| 南雄市| 定州市| 磴口县| 仙游县|