日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从fastjson的TypeReference用法,推导如何实现泛型反射

發布時間:2024/1/17 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从fastjson的TypeReference用法,推导如何实现泛型反射 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.fastjson帶泛型反序列化的用法

fastjson

?

2.我們來看看TypeReference的源碼是什么

TypeReference

* 我們發現TypeReferenced的構造方法是保護方法,也就是你無法直接實例化,你實例化出來的都是TypeReference的匿名子類 * 在構造方法里面有些我們平常沒接觸過的東西他們是什么呢?

3.下面我來看看TypeReference構造方法中到底是些什么東西

* 構造方法中第一句,從字面上的意思解釋就是獲取當前對象的泛型父Class,實際上他的作用也是這樣的Type superClass = this.getClass().getGenericSuperclass();* 第二句就是獲取泛型父Class的泛型參數this.type = ((ParameterizedType)superClass).getActualTypeArguments()[0];

4.Ok!下面我們通過自己的例子來獲取泛型對象的泛型實際參數

*目的:通過FanDemo獲取FanDto泛型類型

第一步夠著兩個類,一個是實際的泛型對象FanDto,一個是用來獲取泛型參數的類FanDemo

FanDto

?

FanDto

第二步我們獲取父泛型類FanDemo

獲取FanDemo


輸出結果:

?

輸出結果

我發現我們已經獲取到了泛型父類FanDemo

第三步通過泛型父類獲取目的泛型類FanDto
泛型父類類型為ParameterizedType類型,通過getActualTypeArguments獲取泛型參數數組

獲取FanDto

?

輸出結果:

輸出結果

這個時候我們獲取到了我們想要的泛型對象FanDto,接下來我們需要獲取FanDto的泛型參數
第四步 獲取FanDto的泛型參數T的類型

獲取泛型參數T

輸出結構為:

輸出結果

?

這個時候我們得到了FanDto的泛型類型為String,ok 大功告成

最后通過獲取泛型對應的字段

獲取泛型對應的字段

?

輸出結果為:

輸出結果

注:泛型類型在編譯的時候都會別轉成Object不會留下任何預設對象的信息,所以必須要通過這種方式才能獲取到泛型類型,這數據泛型擦除的內容,這里我就不細講了


?

總結

以上是生活随笔為你收集整理的从fastjson的TypeReference用法,推导如何实现泛型反射的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。