gpt4 book ai didi

Java 泛型集合,无法将列表添加到列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:10:19 25 4
gpt4 key购买 nike

为什么会这样

public class ListBox {
private Random random = new Random();
private List<? extends Collection<Object>> box;

public ListBox() {
box = new ArrayList<>();
}

public void addTwoForks() {
int sizeOne = random.nextInt(1000);
int sizeTwo = random.nextInt(1000);

ArrayList<Object> one = new ArrayList<>(sizeOne);
ArrayList<Object> two = new ArrayList<>(sizeTwo);

box.add(one);
box.add(two);
}

public static void main(String[] args) {
new ListBox().addTwoForks();
}
}

不工作?只是为了学习而玩弄泛型,我希望我能够在其中插入任何扩展 Collection 的东西,但我得到了这个错误:

The method add(capture#2-of ? extends Collection<Object>) in the type List<capture#2-of ? extends Collection<Object>> is not applicable for the arguments (ArrayList<Object>)
The method add(capture#3-of ? extends Collection<Object>) in the type List<capture#3-of ? extends Collection<Object>> is not applicable for the arguments (ArrayList<Object>)

at ListBox.addTwoForks(ListBox.java:23)
at ListBox.main(ListBox.java:28)

最佳答案

您已声明 box成为List延伸的东西 CollectionObject .但根据 Java 编译器,它可以是 任何东西 扩展 Collection ,即 List<Vector<Object>> .所以它必须禁止 add由于这个原因,采用泛型类型参数的操作。它不能让你添加 ArrayList<Object>List那可能是List<Vector<Object>> .

尝试删除通配符:

private List<Collection<Object>> box;

这应该可行,因为您当然可以添加 ArrayList<Object>ListCollection<Object> .

关于Java 泛型集合,无法将列表添加到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16305164/

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