gpt4 book ai didi

java - 泛型,设置 ArrayList 扩展到 ArrayList

转载 作者:行者123 更新时间:2023-11-29 05:53:39 24 4
gpt4 key购买 nike

我有这个伪代码:

Example A
Interface Option
Class OptionImplementer implements Option
ArrayList<ArrayList<? extends Option>> test = new ArrayList<ArrayList<OptionImplementer>>(); <-- Fails?

为什么会失败? Child 确实实现了 Option,我也尝试了 Super 关键字而不是 extends。

作为“奖励”问题,假设这些构造函数签名具有相同的删除:

 Example B
public void test(ArrayList<ArrayList<? extends Option>> test) {

}
public void test(ArrayList<ArrayList<OptionImplementer>> test) {

}

示例 A 或 B 应该有效。 A 失败了,所以 B 应该可以工作...

最佳答案

你确定它失败了吗?它不应该,当我尝试这个时它不会:

interface Option {}
class Child implements Option {}

public class Example {
public static void main(String[] args) {
ArrayList<? extends Option> list = new ArrayList<Child>();
}
}

但是请注意,如果这样写,则不能向 list 添加任何内容。为什么你不能添加到这样的列表之前已经被问过很多次,例如:

关于java - 泛型,设置 ArrayList<?将 Option> 扩展到 ArrayList<OptionChild>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13010660/

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