黑马程序员技术交流社区
标题:
java泛型限定疑问求解
[打印本页]
作者:
Jeik
时间:
2014-11-9 15:50
标题:
java泛型限定疑问求解
代码如下其中实体数据关系DogSon继承Dog,Dog继承DogParent.
//泛型的限定 <? super Dog> 表示的意思是?可以是dog或者dog的父类
Collection<? super Dog> co4=new LinkedList<DogParent>();
Collection<? super Dog> co5=new LinkedList<Dog>();
co4.add(new Dog("阿忠",5));
//co4.add(new DogParent("中兴",12));//为什么不能加?
co5.add(new Dog("a",1));
//co5.add(new DogParent("爱国",12));//为什么不能加?
System.out.println(co4.size());
//?是dog本身或者是它的子类
Collection<? extends Dog> co6=new ArrayList<Dog>();
Collection<? extends Dog> co7=new ArrayList<DogSon>();
//co6.add(new Dog("b",3));
//co6.add(new DogSon("c",4));//都不能加为什么?
复制代码
作者:
cs8630323
时间:
2014-11-9 16:08
java核心思想 卷一 泛型--通配符 看完就懂了
作者:
likeermei
时间:
2014-11-9 16:24
好问题 ,鄙人一直困惑在此。望哪位大神给个详细的解释
作者:
a8851625
时间:
2014-11-9 17:55
你给的代码看不出你哪个是父类哪个是子类啊,你确定以下子父类的关系看看?
作者:
Jeik
时间:
2014-11-9 18:04
cs8630323 发表于 2014-11-9 16:08
java核心思想 卷一 泛型--通配符 看完就懂了
java核心思想 。。没看过!
作者:
zhangyangLengen
时间:
2014-11-9 18:51
<? extends E> <? super e>:主要用来限定集合中存放的类型;
<? extends E>:主要用在往集合中增加元素的时候,只能往集合中加入该类型e的子类或者本类;
Collection 类的函数 addAll(Collection<? extends E> c)
<? super e>:主要是用在从集合中取出数据时进行比较的时候:comparator比较器
TreeSet(Comparator<? super E> comparator)
作者:
Rain2692
时间:
2014-11-9 18:57
你理解错了,把老毕的视频再看一遍吧,应该是这个<? super DogParent>,你试试。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2