栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

清单 无法转换为ArrayList

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

清单 无法转换为ArrayList

像这样想,您有一个

Fruit
调用
re
(我使用此名称,因为它是您正在使用的变量的名称)。

Fruit re;

您有一个

reverse
输入类型为的方法
Apple

public Apple reverse(Apple a) {    // ...}

我们有一个

re
声明为的变量,
Fruit
这意味着我们要说它总是某种(
Fruit
也许
Apple
,但也许)
Orange
-甚至
Banana

当您尝试

Fruit
将方法赋予方法时
Apple
,编译器会停止运行,因为无法确定它是100%an
Apple
。例如…

Fruit re = new Orange();reverse(re);

kes!可以这么说,我们正在将一个方形的钉子插入一个圆孔中。

reverse
需要
Apple
,不是
Orange
。可能发生坏事!

旁注: 为什么可以那样分配

Apple
给声明为
Fruit
那时的东西?(
reverse
返回an
Apple
Fruit f =reverse(re);
是合法的。)因为an
Apple

一个
Fruit
。如果将其声明为更具体,
Apple
而将返回类型声明为更一般
Fruit

此处将存在问题。(如果
reverse
返回
Fruit
Apple a = reverse(re);
将是非法的。)

如果你没有按照比喻,
替换

Fruit
List
,并
Apple
ArrayList
以上再次读取。
List
Fruit
,是描述抽象概念的一般方法。
ArrayList
Apple
,是抽象概念的特定实现。(
linkedList
可能
Orange
也是。)

通常,您希望将事物声明为可以获取所需功能的最通用事物。进行以下更改应该可以解决您的问题。

public List<Integer> reverse(List<Integer> list) {

我们正在采取某种

List
Integer
S和返回某种
List
Integer
秒。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/574301.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号