下面的代码中有这样一句代码,
ParameterizedType pType = (ParameterizedType)types[0];
这句代码中的ParameterizedType 是一个接口,为什么可以直接定义pType这个变量?
下面代码也是老师讲的通过反射得到集合泛型中的实际类型。有兴趣可以看看
- package com.itheima.day1;
- import java.lang.reflect.Method;
- import java.lang.reflect.ParameterizedType;
- import java.lang.reflect.Type;
- import java.sql.Date;
- import java.util.List;
- public class ReflectFX {
- public static void main(String[] args) throws Exception {
-
- //通过反射得到一个使用过集合的方法
- Method refleMethod = ReflectFX.class.getMethod("applyVector", List.class);
-
- //通过方法的getGenericParameter,Types按照声明顺序返回 Type 对象的数组,这些对象描述了此 Method 对象所表示的方法的形参类型的。法
- Type[] types = refleMethod.getGenericParameterTypes();
-
- //ParameterizedType 表示参数化类型,不过明明是接口为什么能使用强制转换?
- ParameterizedType pType = (ParameterizedType)types[0];
-
- //getActualTypeArguments() 返回表示此类型实际类型参数的 Type 对象的数组。
- System.out.println(pType.getActualTypeArguments()[0]);
- }
- public static <T> void applyVector(List<Date> v1){
-
- }
- }
复制代码
|
|