获取泛型T的ClassT clazz
生活随笔
收集整理的這篇文章主要介紹了
获取泛型T的ClassT clazz
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在我們搭建框架中往往會用到泛型,我們知道泛型的好處是在編譯的時候檢查類型安全,并且所有的強(qiáng)制轉(zhuǎn)換都是自動和隱式的,代碼的重用率高?
然而有時候<method>的入?yún)⒉⒉荒苤苯訌?qiáng)制轉(zhuǎn)換成泛型的類型,比如說下面這段代碼:?
?
很明顯String?類型不能強(qiáng)制轉(zhuǎn)換成<T>?
那我們會需要用到FastJson或者GSON這種類型轉(zhuǎn)換工具進(jìn)行類型的轉(zhuǎn)換工作?
但FastJson和Gson 內(nèi)方法是這樣的:
- 1
- 2
- 3
Class<T> clazz?是顯式的類型。 直接使用的話會報錯:?
?
不能直接使用<T>,那么我們需要獲取到<T>的Class<T> clazz;?
下面是獲取泛型<T>的Class<T> clazz兩種方法:
- 一種是使用反射類reflect
- 1
- 2
getActualTypeArguments()[0]中 ‘0’ 代表的是第一個泛型類型。
- 第二種采用Gson來獲取
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
Class<? super T> rawType就是我們泛型<T>的數(shù)據(jù)類型Class<T> clazz?
總結(jié)
以上是生活随笔為你收集整理的获取泛型T的ClassT clazz的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jsp中的%@ ...%
- 下一篇: backtrader2