gpt4 book ai didi

java - 将对象列表转换为接口(interface)列表时出错

转载 作者:行者123 更新时间:2023-12-01 20:20:47 24 4
gpt4 key购买 nike

我在 JAVA 中有一个名为 ListItem 的接口(interface)和一个实现它的名为 Folder 的类。我有一个文件夹列表,我想将其传递给带有 ListItem 参数列表的方法。这是该方法:

List<ListItem> items = new ArrayList<>();
public void addAll(List<ListItem> items) {
this.items.beginBatchedUpdates();
for (ListItem item : items) {
items.add(item);
}
this.items.endBatchedUpdates();
}

为了进行转换,我将参数更改为 List of ?扩展ListItem:

public void addAll(List<? extends ListItem> items) {
this.items.beginBatchedUpdates();
for (ListItem item : items) {
items.add(item);
}
this.items.endBatchedUpdates();
}

现在传递参数没有任何错误,但我在 items.add(item) 中出现错误,表示无法添加?将 ListItem 扩展到 ListItem 的列表。为什么? Error

最佳答案

很简单,List<? extends ListItem>是很多不同类型的父类(super class)型,包括 List<ListItem> , List<FancyListItem> , List<SuperExtraFancyListItem>依此类推,假设FancyListItemSuperExtraFancyListItemListItem 的子类型.

现在,您的代码尝试做的是添加 ListItem到可能是 List<SuperExtraFancyListItem> 的列表。这样做确实没有意义 - 这是一个其元素应该是 SuperExtraFancyListItem 的列表。物体,不仅仅是普通的ListItem s。

关于java - 将对象列表转换为接口(interface)列表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44767598/

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