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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 颜小飞 黑马帝   /  2011-11-26 12:12  /  2397 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 颜小飞 于 2011-12-12 22:01 编辑

张老师讲过泛型在编译后就不存在泛型的参数类型了,可是通过反射方法的方式来得到泛型参数的参数类型。难道泛型做为方法参数时在编译后泛型的参数类型还存在吗?不明白
  1. import java.lang.reflect.Method;
  2. import java.util.Vector;

  3. /*
  4. * 通过反射来得到泛型参数的参数类型
  5. *
  6. */
  7. public class GenericPram {


  8.         public static void main(String[] args) throws SecurityException, NoSuchMethodException {
  9.                 // TODO Auto-generated method stub
  10.        Method method=GenericPram.class.getMethod("getVic", Vector.class);//通过反射来得到这个方法
  11.            System.out.println(method.getGenericParameterTypes()[0]);//得到泛型的参数类型
  12.                
  13.         }
  14.         public static void getVic(Vector<String> v){}

  15. }
复制代码

3 个回复

倒序浏览
纠结  编译后应该不存在泛型类型的,不然通过反射添加岂不是还限制类型?  不太明白 求解

评分

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

查看全部评分

回复 使用道具 举报
冯敏 黑马帝 2011-11-26 12:34:30
藤椅
泛型代表一个可变的类型 一旦为其指定了一个具体的类型,则泛型就固定了,而且一旦指定, 将无法更改这时候可以说编译后“泛型的参数类型不存在了”,编译前你肯定得指定泛型的类型吧,

评分

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

查看全部评分

回复 使用道具 举报
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。Java语言引入泛型的好处是安全简单
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马