獲取泛型參數(shù)的信息:
1、通過(guò)Field.getGenericType()
方法獲取到Type
類型(該對(duì)象中包含了泛型信息)
2、把Field.getGenericType()
返回的類型強(qiáng)轉(zhuǎn)成ParameterizedType
類型
3、調(diào)用ParameterizedType
里的Type[]getActualTypeArguments()
4、Type[]
中就保存了泛型的信息
通過(guò)下面簡(jiǎn)單示例加深了解:
<pre><code>
class Generic{
public Map<String, Object> cache;
}
//獲取泛型
public class GenericDemo {
public static void main(String[] args) throws Exception {
Class clz = Generic.class;
Field f = clz.getField("cache");
Class cl = f.getType();//這個(gè)方法獲取到了類型,但是不帶泛型信息
System.out.println(cl);//interface java.util.Map,
//獲取泛型信息
Type type = f.getGenericType();
ParameterizedType pType = (ParameterizedType) type;
Type[] types = pType.getActualTypeArguments();
for (Type type2 : types) {
System.out.println(type2);//class java.lang.String
//class java.lang.Object 泛型類型
}
}
}
</pre></code>