技术要求:获取方法参数列表的类型的类型参数的实际类型(类型参数的实际类型)
技术要点:1、使用反射机制
2、参数类型ParameterisedType
class ClassTemp<T>{
T data;
public ClassTemp<T>(T t){data = t;}
public void display(){System.out.println(data);}
}
public class Test{ //这不是泛型类
public void display(ClassTemp<String> temp){} //这不是泛型方法
}
//main
Method displayMethod = Test.class.getMethod("display", ClassTemp.class); //ClassTemp.class不需要类型参数
Type[] types = displayMethod.getGenericParameterTypes(); //获取方法参数列表的所有类型
ParameterisedType pType = (ParameterisedType)types[0]; //参数列表的第一个参数的类型
System.out.println(pType.getRawType()); //方法参数的类型 output:ClassTemp
System.out.println(pType.getActualTypeArcuemnts()[0]); //类型的类型参数 output: String
//注意:我们是无法通过反射来获取泛型的类型参数的信息,这因为擦除 |
|