java裏的類型Type

有時候,我們需要得到泛型的具體類信息。

如操作DAO時:

 

這時我們需要得到泛型參數具體類的信息,即得到T表示的具體類的信息,這裏我們用到了ParameterizedType這個類,調用getActualTypeArguments()方法我們就能得到泛型的所有參數,它返回的是一個數組。

 

首先我們要知道java裏定義了哪些類型。java的類型都實現了java.lang.reflect.Type的接口, 主要有五類:raw types, parameterized types, array types, type variables and primitive types。

raw types: 就是一般類型,如String, Number,等 parameterized types: 含泛型定義的類,如:List, Map, etc.. array types: 含泛型定義的數組,數組內可以是parameterized types或type variables,如<K> K[] type variables:  類型變量,不確定其類型。如:V, <V extends Number> primitive types: int, float, double, etc.. 在java內部有四個接口繼承自Type,分別是GenericArrayType, ParameterizedType, TypeVariable<D>, WildcardType 。其中,array types實現自GenericArrayType;parameterized types實現自ParameterizedType;type variables實現自TypeVariable<D>;WildcardType是形如 ?, ? extends Number一類的type. 需要注意的是, Class也是Type的一種實現。

 

 

 

發佈了31 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章