摘要:隨著人們的生活水平的提高,連帶著人與人之間的相親渠道也進一步改善。于是與兩個老油條會心一笑,一起策劃了今天的這次相親之旅。的膨脹心再一次暴漲。但天色以晚,今天的相親也只能就此打住,有待進一步商榷。
隨著人們的生活水平的提高,連帶著人與人之間的相親渠道也進一步改善。最近偶爾看到幾檔相親的綜藝節目,不管是平民還是明星。可見相親的熱潮正撲面而來。這不Google與Java兩個老家伙也坐不住了,分別想著自己排行285的兒子Gson與自己排行570的女兒List
Google回到家就將此事告訴了Gson,通知他明天就去Android Studio匆匆那年餐廳見面。Gson欲言欲止,好像另有隱情,但在父親高大身軀與凌厲的眼神下答應了下來,而且父親能夠在這眾多的兒子中想到自己,也不忍心拒絕父親的善意。
Gson回到房,躺著床上,腦海回想起自己與Java排行520的女兒Object的地下戀情。
Gson與Object的第一次見面還是被它的Json字符串裝扮所吸引。那一天她宛如一朵含苞待放的牡丹花,美而不妖,艷而不俗,千嬌百媚,無與倫比。(以上均為Gson視角,請勿迷戀。以下為code視角)
{ "marquee": { "content": "翠綠煙紗散花裙", "status": true } }
這一下就激起了Gson的欲望,而且Gson還有點小得意,對于這種女孩他已經有自己的一套完整攻略方案。既然知道了它的Json字符串格式,就可以迅速創建出它對應的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; } }
然后再根據API攻略法則第3089條,使用fromJson方案進行攻略,成功率高達100%
HomeMarqueeModel model = new Gson().fromJson(jsonStr, HomeMarqueeModel.class);
就這樣Gson完成了對Object的第一次攻略,獲取到了Object的好感。但Gson不滿足,為了完全讓Object對自己死心塌地,必須應對Object的所有Json字符串格式。
回去之后,Gson在Android Studio微信平臺與Java中的好哥們泛型T打探Object的特性。經過交流,發現T它剛好是這方面的能手,T告訴Gson每一個Object都有它獨用的Class屬性,為了代表所有的Class類型,剛好可以使用它的泛型T來表示,于是就有了Class
第二天,Gson主動出擊邀請Object去Android Studio匆匆那年餐廳吃飯。Gson還是使用它的fromJson方法,只是在這方法上加入了T的思想。
publicT getObjectGirl(String jsonStr, Class tGirl) { T girl = getGson().fromJson(jsonStr, tGirl); return girl; }
就這樣,Gson完成對Object的所有類型的攻略,從此不再為女友而發愁。
回想結束,拉回到現實,對于明天的相親,Gson打算先用之前的方法試一下,畢竟Gson經過前面的成功實例,還是有點小膨脹,
早上9點,Gson整裝待發,開著自己的蘭博基尼向Android Studio匆匆那年餐廳進發。大約10點Gson到達餐廳,且已經選好了一處風景優雅且面朝大海的位置,靜靜的等候List的到來。半小時之后,只見一個身穿藕色紗衫的女孩,臉帶微笑,身形苗條,長發披向背心,用一根銀色絲帶輕輕挽住,迎面而來。Gson望著她的身影,只覺這女孩身旁似有煙霞輕籠,當真非塵世中人。(以上均為Gson視角,請勿迷戀。以下為code視角)
[ { "title": "身穿藕色紗衫", "url": "http://127.0.0.1:8000/admin2/operation/banner-list/", "status": true }, { "title": "長發披向背心", "url": "http://127.0.0.1:8000/admin2/operation/banner-list/", "status": true } ]
為了保守起見,Gson決定還是按部就班來,首先創建出該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方案進行攻略,稍微不同的是這里它是一個數組
HomeBannerModel[] array = new Gson().fromJson(jsonStr, HomeBannerModel[].class); Listlist = Arrays.asList(array);
嗯,看樣子效果不錯,有進一步發展的機會。于是Gson又展示它的另一個攻略
Type type = new TypeToken>(){}.getType(); List
list = new Gson().fromJson(jsonStr, type);
果然,Gson再一次成功逗笑了List。Gson的膨脹心再一次暴漲。Gson于是大膽起來,套用之前泛型T的思想。于是有了下面的第一次T嘗試
發現不行,不支持這種泛型T解析。既然這種不行,還就換另一種,于是就有了第二次T的嘗試
publicList getListGirl(String jsonStr) { Type type = new TypeToken >(){}.getType(); List
listGirl = new Gson().fromJson(jsonStr, type); return listGirl; }
發現沒問題,那么再來實踐運行一下。發現會報如下異常,導致小姐姐不開心。
java.lang.AssertionError: illegal type variable reference
說明Gson解析不支持該泛型T書寫,導致Type解析出錯,Gson一下懵了,那該咋整呢?雖然前面的攻略有效果,但最后的嘗試沒有成功。但天色以晚,今天的相親也只能就此打住,有待進一步商榷。
請教回到家Gson一直掛念著這件事,一籌莫展。Google看到自己兒子愁眉苦展的樣子,不經詢問今天的進展。了解情況后,Google給Gson的建議是,可以去請教下ParameterizedType。于是Gson迫不及待的去找ParameterizedType學習人生真諦。
經過請教,發現ParameterizedType是繼承于Type,自己另外提供了三個抽象方法,分別為
Type[] getActualTypeArguments() 返回真正所需的Type類型數組
Type getRawType() 返回原始的Type類型
Type getOwnerType() 返回此類的成員類型,例如:O
所以為了解決之前的問題,Gson打算先自定義一個GirlParameterizedType類,讓它實現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迫不及待的邀請List去逛Android Studio商城,希望明天能夠順利拿下List女神。
再次相見在Android Studio商城,Gson再一次看到了List,只不過她今天已經換了一身裝扮。只見她身穿粉紅玫瑰香緊身袍袍袖上衣,下罩翠綠煙紗散花裙,腰間用金絲軟煙羅系成一個大大的蝴蝶結,鬢發低垂斜插碧玉瓚鳳釵,顯的體態修長妖妖艷艷勾人魂魄。不過Gson已早有準備,直接步入主題,拿出昨天準備好的GirlParameterizedType。
publicList getListGirl(String jsonStr, Class tClass) { Type type = getGson().fromJson(response, new HttpClientParameterizedType(tClass)); List listGirl = new Gson().fromJson(jsonStr, type); return listGirl; }
發現是如此的簡單,一擊必中,直擊List芳心。于是一小時之后,Gson雙手已經掛滿了商品,額頭也滿頭大汗,但List還有意未盡的樣子,Gson萬萬沒想到最后居然敗在購物上,果然帶女孩來商城就是個錯誤的選擇...
這次的相親也算完美結束,只不過Gson心中又有了心的疑慮,對于Object與List都是百年難遇的女孩,該如何抉擇呢?要不各位看官這個抉擇就交給你們,相信你們會做出正確的抉擇的,畢竟大家都不想在code的人生中留下一絲bug的身影。
最后,不知大家看的感受如何,有什么感受也可以反饋給我。如果喜歡這種方式,可以關注我的公眾號:Android補給站,以便及時推送最新文章給你喲~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/74484.html
小編寫這篇文章的一個主要目的,主要是用來給大家繼續講解關于python的一些實例,比如綜合運用Python+SeaTable,運用這個技能,可以實現相關的一些計算技能。比如可以實現連續性的計算兩個工作日天數,下面給大家詳細解答下。 當我們計算兩個日期間的間隔天數時,通常是用結束日期減去開始日期,但在實際的項目管理、任務管理、工作計劃等場景中,某些時間段會涉及雙休日、法定節假日,甚至還有公司自...
小編寫這篇文章的一個主要目的,主要是來給大家去做一個介紹,介紹的內容主要是關于Python的一些知識,其中的內容包含有xpath,JsonPath,bs4等一些知識,主要是去介紹他們的一些基本使用方法,具體的內容,下面就給大家詳細解答下。 1.xpath 1.1 xpath使用 google提前安裝xpath插件,按ctrl+shift+x出現小黑框 安裝lxml庫pip instal...
本文主要是給大家介紹了pythonPyVCF文檔處理VCF文件類型范例詳細說明,感興趣的小伙伴值得借鑒參考一下,希望可以有一定的幫助,祝愿大家多多的不斷進步,盡快工作上得到晉升 前言 vcf文件的全名是是variantcallfile,即突變性鑒別文檔,這是基因工作內容過程中產生的一類文檔,存放的是基因里的突變性信息內容。根據對vcf文件展開分析,可以獲得自我的基因變異信息內容。嗯,總而言...
閱讀 1133·2023-04-26 02:46
閱讀 634·2023-04-25 19:38
閱讀 647·2021-10-14 09:42
閱讀 1247·2021-09-08 09:36
閱讀 1363·2019-08-30 15:44
閱讀 1329·2019-08-29 17:23
閱讀 2247·2019-08-29 15:27
閱讀 810·2019-08-29 14:15