public class GenericTest{
public static void main(String[] args) throws Exception{
Method method=GenericTest.class.getMethod("applyVector", Vector.class);
Type[] types=method.getGenericParameterTypes();//这里返回泛型参数类型的Type数组
ParameterizedType type=(ParameterizedType)types[0];//这里是将Type类型转换成ParameterizedType类型,就是为了使用ParameterizedType对象的获取原始类型和
//实际类型两个方法,也就是下面的两个方法,type.getRawType()和type.getActualTypeArguments()[0]);
System.out.println(type.getRawType());
System.out.println(type.getActualTypeArguments()[0]);
}
//在方法中既然已声明是Integer类型的,为何还要通过反射去获得,还有不明白这个方法没有任何内容,那有何实际意义呢?
public static void applyVector(Vector<Integer> v){
}
}
第二个问题:当你需要在运行的时候才知道要载入哪一个类的时候,其中的泛型信息你是一无所知的.只能在动态载入时
才能通过反射获得.你自己的程序public static void applyVector(Vector<Integer> v)是你自己申明,你当然知道咯,
假如我丢给你一个类,又不告诉你源码,你知道我类中定义的泛型是什么吗?这些东西听说框架中应用得很广泛.
第三个问题,那个方法是张老师写出来做测试教学用的,有没有内容一毛钱关系都没有.只要带有泛型就可以了.
|