黑马程序员技术交流社区
标题:
关于反射获取泛型参数的疑问
[打印本页]
作者:
任亚俊
时间:
2013-12-31 11:45
标题:
关于反射获取泛型参数的疑问
代码如下:
//任务6:利用反射获取方法的泛型参数、泛型异常、泛型返回值
public <T> void applyList(List<T> list) throws Exception{
/**
* 思路:
* 1.获取方法
* 2.获取方法的泛型参数
*/
Method method = GenericTest.class.getMethod("applyList", List.class);
//知识点:参数化的类型,ParameterizedType
/*
* 下面是错误的
* ParameterizedType[] pt= (ParameterizedType[]) method.getGenericParameterTypes();
*/
Type[] types=method.getGenericParameterTypes();
//获取types中的元素,转成ParameterizedType这种类型
ParameterizedType pt=(ParameterizedType) types[0];
System.out.println(pt.getRawType()+";"+pt.getActualTypeArguments()[0]);
}
public void testApplyList() throws Exception{
applyList(new ArrayList<Integer>());
}
复制代码
打印结果为:interface java.util.List;T
而我想要的结果是:java.util.ArrayList;Integer
怎样才能实现我想要的结果呢?求大神解答。
作者:
小骗子
时间:
2013-12-31 12:50
返回值并没有问题,因为你定义这个方法的时候 参数就是 List T
既然你是获取 参数 那就把参数做修改就ok了
public <T> void applyList(List<T> list) throws Exception{
|
public <T> void applyList(ArrayList<Integer> list) throws Exception{
作者:
任亚俊
时间:
2013-12-31 17:32
小骗子 发表于 2013-12-31 12:50
返回值并没有问题,因为你定义这个方法的时候 参数就是 List T
既然你是获取 参数 那就把参数做修改就ok了 ...
我想获取传入的参数,而不是方法定义是的参数。即:我想获得实参而不是形参。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2