下面是通过反射获得泛型的参数化类型的代码- public class GenericalReflection {
- public static void main(String[] args)throws Exception{
- Method methodApply = GenericalReflection.class.getDeclaredMethod("setDates", Vector.class);
- ParameterizedType pType = (ParameterizedType)(methodApply.getGenericParameterTypes())[0];
- System.out.println("setDates("
- + ((Class) pType.getRawType()).getName() + "<"
- + ((Class) (pType.getActualTypeArguments()[0])).getName()
- + ">)" );
- }
- private Vector<Date> dates = new Vector<Date>();
- public void setDates(Vector<Date> dates) {
- this.dates = dates;
- }/*getGenericParameterTypes()得到原始参数类型,返回是Class对象,
- setDates(class java.util.Vector<java.util.Date>)
- 而使用了后打印的是setDates(java.util.Vector),了
- getActualTypeArguments()方法是得到实例化类型参数的类型,一看到s就知道是数组,getActualTypeArguments()[0]就是第一个参数的类型*/
- }
复制代码 问题
Method methodApply = GenericalReflection.class.getDeclaredMethod("setDates", Vector.class);
得到某个方法的字节码对象,必须要知道这个方法的名字,既然我要知道这个方法里的参数化类型,既然i都知道这个方法名字了我找到这个方法不就知道它的参数化类型了吗。用得着这么麻烦,通过反射把它找出来。感觉没用
谁能告诉我 通过反射获得泛型的参数化类型的用武之地 |