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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 任亚俊 中级黑马   /  2013-12-31 11:45  /  1120 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

代码如下:
  1.         //任务6:利用反射获取方法的泛型参数、泛型异常、泛型返回值
  2.         public <T> void applyList(List<T> list) throws Exception{
  3.                 /**
  4.                  * 思路:
  5.                  * 1.获取方法
  6.                  * 2.获取方法的泛型参数
  7.                  */
  8.                 Method method = GenericTest.class.getMethod("applyList", List.class);
  9.                 //知识点:参数化的类型,ParameterizedType
  10.                 /*
  11.                  * 下面是错误的
  12.                  * ParameterizedType[] pt= (ParameterizedType[]) method.getGenericParameterTypes();
  13.                  */
  14.                 Type[] types=method.getGenericParameterTypes();
  15.                 //获取types中的元素,转成ParameterizedType这种类型
  16.                 ParameterizedType pt=(ParameterizedType) types[0];
  17.                 System.out.println(pt.getRawType()+";"+pt.getActualTypeArguments()[0]);
  18.         }
  19.         public void testApplyList() throws Exception{
  20.                 applyList(new ArrayList<Integer>());
  21.         }
复制代码

打印结果为:interface java.util.List;T
而我想要的结果是:java.util.ArrayList;Integer
怎样才能实现我想要的结果呢?求大神解答。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

2 个回复

倒序浏览
返回值并没有问题,因为你定义这个方法的时候 参数就是 List T
既然你是获取  参数 那就把参数做修改就ok了   
public <T> void applyList(List<T> list) throws Exception{
|
public <T> void applyList(ArrayList<Integer> list) throws Exception{

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
小骗子 发表于 2013-12-31 12:50
返回值并没有问题,因为你定义这个方法的时候 参数就是 List T
既然你是获取  参数 那就把参数做修改就ok了 ...

我想获取传入的参数,而不是方法定义是的参数。即:我想获得实参而不是形参。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马