gpt4 book ai didi

java - 为什么这个使用泛型的 HashMap 声明是错误的?

转载 作者:行者123 更新时间:2023-12-02 02:17:36 24 4
gpt4 key购买 nike

HashMap<String, ArrayList<? extends Serializable>> map = new HashMap<String, ArrayList<ArrayList>>();

这不能编译。据我对 Java 泛型的了解,应该如此。还有这个:

ArrayList<? extends Serializable> c = new ArrayList<ArrayList<String>>();

编译成功。

谁能告诉我为什么上面的代码不能编译吗?

最佳答案

你为什么认为应该这样做?一个HashMap<String, Apple>永远不能从 HashMap<String, Orange> 分配对于任何可能的不平等AppleOrange ,只要 AppleOrange不是通配符类型。

ArrayList<? extends Serializable>ArrayList<ArrayList<?>> 不一样.

你的意思可能是:

HashMap<String, ? extends ArrayList<? extends Serializable>> map = 
new HashMap<String, ArrayList<ArrayList<?>>>();

现在它可以编译了,因为确实:

? extends Serializable // can be assigned from
ArrayList<?>

? extends ArrayList<? extends Serializable> // can be assigned from
ArrayList< ArrayList<?>>

关于java - 为什么这个使用泛型的 HashMap 声明是错误的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49061565/

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