gpt4 book ai didi

java - 具有有界通配符类型的数字列表列表

转载 作者:搜寻专家 更新时间:2023-10-31 19:31:46 27 4
gpt4 key购买 nike

如果我有这个,

Collection<? extends Number> c = new ArrayList<>();
c.add(new Integer(1)); // Compile time error

因为我们不知道c的元素类型代表什么,所以我们不能给它加整数。

如果我喜欢,

List<List<? extends Number>> history = new ArrayList<>();

List<Integer> integers = new ArrayList<>();
integers.add(new Integer(1));

List<Double> doubles = new ArrayList<>();
doubles.add(new Double(2));

history.add(integers); // This is allowed
history.add(doubles); // This is allowed

为什么允许在第二个示例中添加?

最佳答案

Collection<? extends ...>
c.add(...);

无法添加具有下限的集合。

List<List<...>> history;
history.add(...); // Allowed

外部列表具有具体类型。 ? extends 通配符在内部列表中,但它无关紧要,因为您要添加到外部列表。我用 ... 替换了通配符,因为当您调用 history.add() 时它是什么并不重要。

如果外部列表有通配符绑定(bind),则添加将失败。

List<? extends List<...>> history;
history.add(...); // NOT allowed

关于java - 具有有界通配符类型的数字列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56350451/

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