A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 血马雄风 中级黑马   /  2015-8-27 10:13  /  151 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


技术要求:获取方法参数列表的类型的类型参数的实际类型(类型参数的实际类型)


技术要点: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

//注意:我们是无法通过反射来获取泛型的类型参数的信息,这因为擦除

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马