"错误-6ren">
gpt4 book ai didi

java - List的逐次继承

转载 作者:行者123 更新时间:2023-12-04 15:52:24 25 4
gpt4 key购买 nike

我有一个这样的列表结构设置:

List<List<Value>> l = new RowList();

给出一个 "Type mismatch: Cannot convert from RowList to List<List<Value>>"错误。实现如下:

public class RowList extends ArrayList<ValueList>
public class ValueList extends ArrayList<Value>

Value 是我的代码库中的一个对象。为什么这不起作用?当我有这个时,一切正常:

public class RowList extends ArrayList<List<Value>>

对于我正在处理的大学作业,我们的讲师编写的代码通过调用返回 List<List<Value>> 的方法来工作。在我的代码中,然后添加 List<Value>到那个名单。由于该程序旨在实现数据库,因此有许多要求,例如键值不会多次出现等。要检查这是否没有发生,我需要能够拥有一个 ValueList 类或类似的东西这样我就可以扩展 add()检查这些要求的方法。

现在听起来这不是正确的做事方式,但在这件事上我真的没有任何选择,因为我们不允许更改执行此操作的代码。我相信这个想法是它让我们想到了泛型。

最佳答案

首先创建集合的子类是个坏主意。坚持标准实现,使用组合而不是继承。

现在要理解为什么这不能编译,下面是一个简短的例子。假设你想做的事情是可能的并且可以编译,那么你可以这样做:

RowList rowList = new RowList();
List<List<Value>> listOfLists = rowList;
listOfLists.add(new LinkedList<Value>());

尽管 RowList 应该包含 ValueList 的实例只有,你才会有一个 LinkedList<Value>在内部,破坏了程序的类型安全性和正确性。

关于java - List的逐次继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16730189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com