黑马程序员技术交流社区

标题: 泛型疑问? [打印本页]

作者: 谢洋    时间: 2013-3-17 10:51
标题: 泛型疑问?
本帖最后由 谢洋 于 2013-3-17 10:53 编辑

如:
1、ArrayList<E> 定义的泛型,泛编译后E变成Oject?
     如果不是,那么怎么反射出add(E e)方法?如果能反出,应该传什么参数组getMethod()?
2、<? extends T>,还个还好理解,但有些泛型定义成< ? super T> ,
      如果上面的编译后变成Object还可以理解,T可以有n个父类,那这T编译后会怎么表示,?
    被这样定义的泛型,又怎么反射出该类的方法?传什么类型参?

作者: 黄玉昆    时间: 2013-3-17 10:53
T怎么会有n个父类呢?
作者: 谢洋    时间: 2013-3-17 11:06
黄玉昆 发表于 2013-3-17 10:53
T怎么会有n个父类呢?

我的意思是爸爸、爸爸的爸爸、爸爸的爸爸的爸爸....;不好意,没说清楚
作者: HM张超    时间: 2013-3-17 12:42
ArrayList<E> E就是对象! 这个集合也必须存E的对象!
就像ArrayList<int> 这个集合只能存整数 而不能存字符串一样!
作者: 炉海佳    时间: 2013-3-17 21:39
1.ArrayList<E> 定义的泛型,泛编译后E变成Oject?
     E代表的是类型,可以是String 可以是Integer 等等  例如
ArrayList<String> al = new ArrayList<String>();//定义泛型为String类型

al.add("abc1");//将String类型字符串abc1添加到集合中
//al.add(2);//这里就不行,集合已经定义了泛型是String ,就不能存int数字

2.<? extends T>,还个还好理解,但有些泛型定义成< ? super T>
? extends E: 可以接收E类型或者E的子类型。限定了上限。
? super E: 可以接收E类型或者E的父类型。限定了下限。

       




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