黑马程序员技术交流社区
标题:
碰到个问题,不知道自己理解的对不对,吧友们帮帮忙
[打印本页]
作者:
Foundmoon
时间:
2015-6-16 02:12
标题:
碰到个问题,不知道自己理解的对不对,吧友们帮帮忙
今天在吧里看帖子,看到下面的问题:
关于泛型,这个为什么错误
http://bbs.itheima.com/thread-204300-1-1.html
(出处: 黑马程序员IT技术论坛)
ArrayList<Person> al = new ArrayList<Student>( );
父类引用可以指向子类对象,但这句错在哪里了,希望高手详解
乍一看,我也蒙圈了,我觉得提问者问的对啊,我也学过泛型限定,不是允许 ?extends Person吗,Student是子类,应该可以啊
看了下笔记,有一条:在new集合时,集合的泛型必须一样。
老毕视频是说为了安全,假设允许子类的话,那么Person的其他子类如worker也可以。举得例子没听明白,有明白的希望讲一下
但是子父类的泛型限定在方法参数上是有应用的,我觉得是不是提问者把二者混淆了
在方法上如
void show(ArrayList<?extends Person>){}是可用的,假如有如下两个ArrayList集合
ArrayList<Person> al1 = new ArrayList<Person>( );
ArrayList<Student> al2 = new ArrayList<Student>( );
那么在show的参数里传入 al1和al2都是可以的。
作者:
micro_hx
时间:
2015-6-16 09:42
这么说吧,你记住就行,就是list的前后所包括的泛型应该是一致的,这里是因为泛型的擦除问题所引起的,也有一部分是因为安全问题。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2