黑马程序员技术交流社区

标题: 关于方法中泛型参数的理解 [打印本页]

作者: 颜小飞    时间: 2011-11-26 12:12
标题: 关于方法中泛型参数的理解
本帖最后由 颜小飞 于 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. }
复制代码

作者: 楓林虹影    时间: 2011-11-26 12:26
纠结  编译后应该不存在泛型类型的,不然通过反射添加岂不是还限制类型?  不太明白 求解
作者: 冯敏    时间: 2011-11-26 12:34
泛型代表一个可变的类型 一旦为其指定了一个具体的类型,则泛型就固定了,而且一旦指定, 将无法更改这时候可以说编译后“泛型的参数类型不存在了”,编译前你肯定得指定泛型的类型吧,
作者: wanghongye    时间: 2011-11-27 14:56
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。Java语言引入泛型的好处是安全简单




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