成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Gson與List<T>對(duì)象間的相親之旅

wujl596 / 1051人閱讀

摘要:隨著人們的生活水平的提高,連帶著人與人之間的相親渠道也進(jìn)一步改善。于是與兩個(gè)老油條會(huì)心一笑,一起策劃了今天的這次相親之旅。的膨脹心再一次暴漲。但天色以晚,今天的相親也只能就此打住,有待進(jìn)一步商榷。

隨著人們的生活水平的提高,連帶著人與人之間的相親渠道也進(jìn)一步改善。最近偶爾看到幾檔相親的綜藝節(jié)目,不管是平民還是明星??梢娤嘤H的熱潮正撲面而來。這不Google與Java兩個(gè)老家伙也坐不住了,分別想著自己排行285的兒子Gson與自己排行570的女兒List也該到了相親的年齡了。于是Google與Java兩個(gè)老油條會(huì)心一笑,一起策劃了今天的這次相親之旅。

地下戀情

Google回到家就將此事告訴了Gson,通知他明天就去Android Studio匆匆那年餐廳見面。Gson欲言欲止,好像另有隱情,但在父親高大身軀與凌厲的眼神下答應(yīng)了下來,而且父親能夠在這眾多的兒子中想到自己,也不忍心拒絕父親的善意。

Gson回到房,躺著床上,腦?;叵肫鹱约号cJava排行520的女兒Object的地下戀情。

Gson與Object的第一次見面還是被它的Json字符串裝扮所吸引。那一天她宛如一朵含苞待放的牡丹花,美而不妖,艷而不俗,千嬌百媚,無與倫比。(以上均為Gson視角,請(qǐng)勿迷戀。以下為code視角)

{
    "marquee": {
        "content": "翠綠煙紗散花裙",
        "status": true
    }
}

這一下就激起了Gson的欲望,而且Gson還有點(diǎn)小得意,對(duì)于這種女孩他已經(jīng)有自己的一套完整攻略方案。既然知道了它的Json字符串格式,就可以迅速創(chuàng)建出它對(duì)應(yīng)的java類

public class HomeMarqueeModel {
 
    private MarqueeModel marquee;
 
    public static class MarqueeModel {
        private String content;
        private boolean status;
 
        public String getContent() {
            return content;
        }
 
        public boolean isStatus() {
            return status;
        }
    }
 
    public MarqueeModel getMarquee() {
        return marquee;
    }
}

然后再根據(jù)API攻略法則第3089條,使用fromJson方案進(jìn)行攻略,成功率高達(dá)100%

HomeMarqueeModel model = new Gson().fromJson(jsonStr, HomeMarqueeModel.class);

就這樣Gson完成了對(duì)Object的第一次攻略,獲取到了Object的好感。但Gson不滿足,為了完全讓Object對(duì)自己死心塌地,必須應(yīng)對(duì)Object的所有Json字符串格式。

回去之后,Gson在Android Studio微信平臺(tái)與Java中的好哥們泛型T打探Object的特性。經(jīng)過交流,發(fā)現(xiàn)T它剛好是這方面的能手,T告訴Gson每一個(gè)Object都有它獨(dú)用的Class屬性,為了代表所有的Class類型,剛好可以使用它的泛型T來表示,于是就有了Class

第二天,Gson主動(dòng)出擊邀請(qǐng)Object去Android Studio匆匆那年餐廳吃飯。Gson還是使用它的fromJson方法,只是在這方法上加入了T的思想。

    public  T getObjectGirl(String jsonStr, Class tGirl) {
        T girl = getGson().fromJson(jsonStr, tGirl);
        return girl;
    }

就這樣,Gson完成對(duì)Object的所有類型的攻略,從此不再為女友而發(fā)愁。
回想結(jié)束,拉回到現(xiàn)實(shí),對(duì)于明天的相親,Gson打算先用之前的方法試一下,畢竟Gson經(jīng)過前面的成功實(shí)例,還是有點(diǎn)小膨脹,

初次見面

早上9點(diǎn),Gson整裝待發(fā),開著自己的蘭博基尼向Android Studio匆匆那年餐廳進(jìn)發(fā)。大約10點(diǎn)Gson到達(dá)餐廳,且已經(jīng)選好了一處風(fēng)景優(yōu)雅且面朝大海的位置,靜靜的等候List的到來。半小時(shí)之后,只見一個(gè)身穿藕色紗衫的女孩,臉帶微笑,身形苗條,長(zhǎng)發(fā)披向背心,用一根銀色絲帶輕輕挽住,迎面而來。Gson望著她的身影,只覺這女孩身旁似有煙霞輕籠,當(dāng)真非塵世中人。(以上均為Gson視角,請(qǐng)勿迷戀。以下為code視角)

[
    {
        "title": "身穿藕色紗衫",
        "url": "http://127.0.0.1:8000/admin2/operation/banner-list/",
        "status": true
    },
    {
        "title": "長(zhǎng)發(fā)披向背心",
        "url": "http://127.0.0.1:8000/admin2/operation/banner-list/",
        "status": true
    }
]

為了保守起見,Gson決定還是按部就班來,首先創(chuàng)建出該Json字符串列表的java類

public class HomeBannerModel {
    private String title;
    private String url;
    private boolean status;
 
    public String getTitle() {
        return title;
    }
 
    public String getUrl() {
        return url;
    }
 
    public boolean isStatus() {
        return status;
    }
}

然后再使用fromJson方案進(jìn)行攻略,稍微不同的是這里它是一個(gè)數(shù)組

HomeBannerModel[] array = new Gson().fromJson(jsonStr, HomeBannerModel[].class);
List list = Arrays.asList(array);

嗯,看樣子效果不錯(cuò),有進(jìn)一步發(fā)展的機(jī)會(huì)。于是Gson又展示它的另一個(gè)攻略

Type type = new TypeToken>(){}.getType();
List list = new Gson().fromJson(jsonStr, type);

果然,Gson再一次成功逗笑了List。Gson的膨脹心再一次暴漲。Gson于是大膽起來,套用之前泛型T的思想。于是有了下面的第一次T嘗試

發(fā)現(xiàn)不行,不支持這種泛型T解析。既然這種不行,還就換另一種,于是就有了第二次T的嘗試

public  List getListGirl(String jsonStr) {
      Type type = new TypeToken>(){}.getType();
      List listGirl = new Gson().fromJson(jsonStr, type);
      return listGirl;
}

發(fā)現(xiàn)沒問題,那么再來實(shí)踐運(yùn)行一下。發(fā)現(xiàn)會(huì)報(bào)如下異常,導(dǎo)致小姐姐不開心。

java.lang.AssertionError: illegal type variable reference

說明Gson解析不支持該泛型T書寫,導(dǎo)致Type解析出錯(cuò),Gson一下懵了,那該咋整呢?雖然前面的攻略有效果,但最后的嘗試沒有成功。但天色以晚,今天的相親也只能就此打住,有待進(jìn)一步商榷。

請(qǐng)教

回到家Gson一直掛念著這件事,一籌莫展。Google看到自己兒子愁眉苦展的樣子,不經(jīng)詢問今天的進(jìn)展。了解情況后,Google給Gson的建議是,可以去請(qǐng)教下ParameterizedType。于是Gson迫不及待的去找ParameterizedType學(xué)習(xí)人生真諦。

經(jīng)過請(qǐng)教,發(fā)現(xiàn)ParameterizedType是繼承于Type,自己另外提供了三個(gè)抽象方法,分別為

Type[] getActualTypeArguments() 返回真正所需的Type類型數(shù)組

Type getRawType() 返回原始的Type類型

Type getOwnerType() 返回此類的成員類型,例如:O.I。如果為頂層類型,則返回null。

所以為了解決之前的問題,Gson打算先自定義一個(gè)GirlParameterizedType類,讓它實(shí)現(xiàn)ParameterizedType接口。code如下:

    private static class GirlParameterizedType implements ParameterizedType {
 
        private Class aClass;
 
        GirlParameterizedType(Class aClass) {
            this.aClass = aClass;
        }
 
        @NonNull
        @Override
        public Type[] getActualTypeArguments() {
            return new Type[]{aClass};
        }
 
        @NonNull
        @Override
        public Type getRawType() {
            return List.class;
        }
 
        @Override
        public Type getOwnerType() {
            return null;
        }
    }

既然找到問題所在,Gson迫不及待的邀請(qǐng)List去逛Android Studio商城,希望明天能夠順利拿下List女神。

再次相見

在Android Studio商城,Gson再一次看到了List,只不過她今天已經(jīng)換了一身裝扮。只見她身穿粉紅玫瑰香緊身袍袍袖上衣,下罩翠綠煙紗散花裙,腰間用金絲軟煙羅系成一個(gè)大大的蝴蝶結(jié),鬢發(fā)低垂斜插碧玉瓚鳳釵,顯的體態(tài)修長(zhǎng)妖妖艷艷勾人魂魄。不過Gson已早有準(zhǔn)備,直接步入主題,拿出昨天準(zhǔn)備好的GirlParameterizedType。

public  List getListGirl(String jsonStr, Class tClass) {
      Type type =  getGson().fromJson(response, new HttpClientParameterizedType(tClass));
      List listGirl = new Gson().fromJson(jsonStr, type);
      return listGirl;
}

發(fā)現(xiàn)是如此的簡(jiǎn)單,一擊必中,直擊List芳心。于是一小時(shí)之后,Gson雙手已經(jīng)掛滿了商品,額頭也滿頭大汗,但List還有意未盡的樣子,Gson萬萬沒想到最后居然敗在購(gòu)物上,果然帶女孩來商城就是個(gè)錯(cuò)誤的選擇...

這次的相親也算完美結(jié)束,只不過Gson心中又有了心的疑慮,對(duì)于Object與List都是百年難遇的女孩,該如何抉擇呢?要不各位看官這個(gè)抉擇就交給你們,相信你們會(huì)做出正確的抉擇的,畢竟大家都不想在code的人生中留下一絲bug的身影。

最后,不知大家看的感受如何,有什么感受也可以反饋給我。如果喜歡這種方式,可以關(guān)注我的公眾號(hào):Android補(bǔ)給站,以便及時(shí)推送最新文章給你喲~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74484.html

相關(guān)文章

  • 如何使用Python+SeaTable實(shí)現(xiàn)計(jì)算兩個(gè)工作日天數(shù)

      小編寫這篇文章的一個(gè)主要目的,主要是用來給大家繼續(xù)講解關(guān)于python的一些實(shí)例,比如綜合運(yùn)用Python+SeaTable,運(yùn)用這個(gè)技能,可以實(shí)現(xiàn)相關(guān)的一些計(jì)算技能。比如可以實(shí)現(xiàn)連續(xù)性的計(jì)算兩個(gè)工作日天數(shù),下面給大家詳細(xì)解答下?! ‘?dāng)我們計(jì)算兩個(gè)日期間的間隔天數(shù)時(shí),通常是用結(jié)束日期減去開始日期,但在實(shí)際的項(xiàng)目管理、任務(wù)管理、工作計(jì)劃等場(chǎng)景中,某些時(shí)間段會(huì)涉及雙休日、法定節(jié)假日,甚至還有公司自...

    89542767 評(píng)論0 收藏0
  • Python xpath,JsonPath,bs4的基本使用方法

      小編寫這篇文章的一個(gè)主要目的,主要是來給大家去做一個(gè)介紹,介紹的內(nèi)容主要是關(guān)于Python的一些知識(shí),其中的內(nèi)容包含有xpath,JsonPath,bs4等一些知識(shí),主要是去介紹他們的一些基本使用方法,具體的內(nèi)容,下面就給大家詳細(xì)解答下。  1.xpath  1.1 xpath使用  google提前安裝xpath插件,按ctrl+shift+x出現(xiàn)小黑框  安裝lxml庫pip instal...

    89542767 評(píng)論0 收藏0
  • python PyVCF文件處理VCF文件格式實(shí)例詳解

      本文主要是給大家介紹了pythonPyVCF文檔處理VCF文件類型范例詳細(xì)說明,感興趣的小伙伴值得借鑒參考一下,希望可以有一定的幫助,祝愿大家多多的不斷進(jìn)步,盡快工作上得到晉升  前言  vcf文件的全名是是variantcallfile,即突變性鑒別文檔,這是基因工作內(nèi)容過程中產(chǎn)生的一類文檔,存放的是基因里的突變性信息內(nèi)容。根據(jù)對(duì)vcf文件展開分析,可以獲得自我的基因變異信息內(nèi)容。嗯,總而言...

    89542767 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

wujl596

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<