注册 登录
编程论坛 JAVA论坛

书上的简单判断题

邹特强 发布于 2017-04-05 22:19, 1730 次点击
ArrayList<Dog>dogs1=new ArrayList<Animal>();为什么是对的
List<Animal>list=new ArrayList<Animal>();为什么是错的
ArrayList<Dog>dogs=new ArrayList<Dog>();为什么是错的
List <Dog>dogList=dogs;为什么是错的
ArrayList<Object>objects=new ArrayList<Object>();为什么是错的
List<Object>objList=objects;为什么是错的


[此贴子已经被作者于2017-4-5 22:24编辑过]

4 回复
#2
纵横阳仔2017-04-06 07:22
这个是不是反了?
只有第一个是错的,其他都是对的.
泛型中不存在子父类关系.它是数据类型的一部分.
即使Dog extends Animal ;
ArrayList<Animal> dogs1 = new ArrayList<Dog>();也是错的.

必须这样才可以:
ArrayList<? extends Animal> list = new ArrayList<Dog>();
ArrayList<? super Dog> list1 = new ArrayList<Animal>();

[此贴子已经被作者于2017-4-6 12:00编辑过]

#3
邹特强2017-04-06 12:41
回复 2楼 纵横阳仔
真的确定你的判断没错吗?如果是就和我想的一样,书上答案就是这样,我都填反了
#4
纵横阳仔2017-04-06 17:38
编译运行都没错吧,相信实践是检验真理的唯一方法
#5
邹特强2017-04-10 12:47
回复 4楼 纵横阳仔
哈哈这句话在理!
1