之前用反射的時候,基本都是Class。最近弄生成接口文檔工具的時候,又接觸了一下ParameterizedType,偶然的機會發現兩者居然有聯繫:頂級的接口都是Type。於是就統一整理下Type家族的東西。
Type是Java編程語言中所有類型的公共高級接口。它們包括原始類型、參數化類型、數組類型、類型變量和基本類型。
- 原始類型:Class類的實例表示正在運行的Java應用程序中的類和接口。枚舉是一種類,註解是一種接口。每個數組屬於被映射爲Class對象的一個類,所有具有相同元素類型和維數的數組都共享該Class對象。基本的Java類型(boolean、byte、char、short、int、long、float 和 double)和關鍵字void也表示爲Class對象。
- 參數化類型:ParameterizedType表示參數化類型,如Collection<String>。
- 數組類型:GenericArrayType表示一種數組類型,其組件類型爲參數化類型或類型變量。
- 類型變量:TypeVariable是各種類型變量的公共高級接口。
- 基本類型:就是我們所說的Java的基本類型,即int,float,double等。
此外,WildcardType表示一個通配符類型表達式,如?、? extends Number或? super Integer。
1、原始類型
Class是Type的一個實現類,屬於原始類型,是Java反射的基礎,對Java類的抽象。
在程序運行期間,每一個類都對應一個Class對象,這個對象包含了類的修飾符、方法、屬性、構造等信息,所以我們可以對這個Class對象進行相應的操作,這就是Java的反射。
2、參數化類型
接口方法:
用法示例:
3、數組類型
接口方法:
用法示例:
4、變量類型
接口方法:
用法示例:
5、泛型表達式(通配符表達式)
接口方法:
用法示例: