Java中ArrayList的向上转型问题(父类与子类的关系),求大神解决
答案:4 悬赏:50 手机版
解决时间 2021-11-20 05:26
- 提问者网友:温旧梦泪无声
- 2021-11-19 06:04
Java中ArrayList的向上转型问题(父类与子类的关系),求大神解决
最佳答案
- 五星知识达人网友:躲不过心动
- 2021-11-19 07:30
java泛型不能这么用,泛型中实际使用类型必须一致,你这种使用方式不叫向上转型,解决方法就是
ArrayList object = new ArrayList();
FatherClass fs=null;
for(,i {
fs=(FatherClass)object.get(i);
doSomeThing.....;
}
ArrayList
FatherClass fs=null;
for(,i
fs=(FatherClass)object.get(i);
doSomeThing.....;
}
全部回答
- 1楼网友:慢性怪人
- 2021-11-19 09:56
这个是java里面典型的一个问题:FatherClass和ChildClass是父子类关系,但ArrayList 和 ArrayList不是父子类关系,ArrayList,vector,list,linkedlist,hashmap,hashset等都是这个原则。这些泛型类都是不存在继承关系的!记住这个原则就行了
- 2楼网友:渊鱼
- 2021-11-19 09:32
这是因为 泛型 是一个 编译欺骗 方式
所谓编译欺骗 是: 你写的代码 和 机器看到的代码是不一样的
泛型的 编译欺骗 是 在调用时 强转,你这样写 编译器 无法确认你 ArrayList 中装的具体类型是什么,无法强转的,使用 泛型的话 前后一定要统一
因为 编译器 并不知道 你后面的 类型 是否 是前面类型的子集
所谓编译欺骗 是: 你写的代码 和 机器看到的代码是不一样的
泛型的 编译欺骗 是 在调用时 强转,你这样写 编译器 无法确认你 ArrayList 中装的具体类型是什么,无法强转的,使用 泛型的话 前后一定要统一
因为 编译器 并不知道 你后面的 类型 是否 是前面类型的子集
- 3楼网友:千杯敬自由
- 2021-11-19 08:54
ArrayList();包括泛型在内的整个作为类型是无法强转成ArrayList
如果想这样使用 可以使用 extends 关键字来限制泛型参数的适用范围
List 表示泛型实际参数可以是所有实现了 Collection接口的类,如list,set等。
所以你这个就这样写
ArrayList extends FatherClass> object = new ArrayList();
代表泛型参数可以是FatherClass或者其子类
如果想这样使用 可以使用 extends 关键字来限制泛型参数的适用范围
List
所以你这个就这样写
ArrayList extends FatherClass> object = new ArrayList
代表泛型参数可以是FatherClass或者其子类
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯