黑马程序员技术交流社区
标题:
如何对泛型上下边界进行区分和使用,本人已晕
[打印本页]
作者:
「AτS」
时间:
2016-3-30 12:42
标题:
如何对泛型上下边界进行区分和使用,本人已晕
本帖最后由 「AτS」 于 2016-3-30 12:42 编辑
今天看完了泛型上下边界的使用:
泛型固定下边界: <? super E> 本人以为是E类型及E的父类的类型
泛型固定上边界: <? extends E> 本人以为是E类型及E的子类的类型
然而在练习的时候碰到如下问题: 首先三个类继承关系如下:
class God{
}
class Person extends God{
}
class Student extends Person {
}
复制代码
然后定义一个集合,设定泛型上边界: 结果三个add方法下面都是红色波浪线....
ArrayList<? extends Person> al =new ArrayList<>();
al.add(new God()); //报错
al.add(new Person()); /报错
al.add(new Student()); //报错
复制代码
然后将泛型改为下边界: 结果是E类型及子类的添加都是成功的
ArrayList<? super Person> al =new ArrayList<>();
al.add(new God()); //报错
al.add(new Person());
al.add(new Student());
复制代码
这么一下弄得我懵了
<? super Person>在我看来变成了上边界,就是Person类及下面的子类都能添加,应该是这么理解的么?
还有为什么
<? extends Person>的时候是三个都添加失败?,好歹应该有一个吧
这个边界到底怎么理解呢,请大神解答一下,谢谢~
作者:
「AτS」
时间:
2016-3-30 15:10
自己顶一下,期待大神们能教教我呀
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2