黑马程序员技术交流社区

标题: 类型参数的实际类型 [打印本页]

作者: 血马雄风    时间: 2015-8-27 10:13
标题: 类型参数的实际类型

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


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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2