获取泛型参数的信息:
1、通过Field.getGenericType()
方法获取到Type
类型(该对象中包含了泛型信息)
2、把Field.getGenericType()
返回的类型强转成ParameterizedType
类型
3、调用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();//这个方法获取到了类型,但是不带泛型信息
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>
网友评论