獲取泛型參數(shù)的信息:
1、通過Field.getGenericType()方法獲取到Type類型(該對象中包含了泛型信息)
2、把Field.getGenericType()返回的類型強(qiáng)轉(zhuǎn)成ParameterizedType類型
3、調(diào)用ParameterizedType里的Type[]getActualTypeArguments()
4、Type[]中就保存了泛型的信息
通過下面簡單示例加深了解:
<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>