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

Java 为什么这个使用泛型的HashMap声明是错误的? HashMap,java,generics,serialization,arraylist,hashmap,Java,Generics,Serialization,Arraylist,Hashmap,为什么你认为它应该?对于任何可能不相等的Apple和Orange,只要Apple和Orange都不是通配符类型,就决不能从HashMap分配HashMap 和ArrayList> 你可能的意思是: ArrayList<? extends Serializable> c = new ArrayList<ArrayList<String>>(); HashMap 及 ?扩展ArrayList> 你为什么认为应该这样做?对于任何可能不相等的Apple和Orang

为什么你认为它应该?对于任何可能不相等的
Apple
Orange
,只要
Apple
Orange
都不是通配符类型,就决不能从
HashMap
分配
HashMap

ArrayList>

你可能的意思是:

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

?扩展ArrayList>

你为什么认为应该这样做?对于任何可能不相等的
Apple
Orange
,只要
Apple
Orange
都不是通配符类型,就决不能从
HashMap
分配
HashMap

ArrayList>

你可能的意思是:

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

?扩展ArrayList>

也许
ArrayList
不扩展
Serializable
?密切相关:
A
扩展(或实现)
B
并不意味着
HashMap
扩展
HashMap
。毕竟,
HashMap
是可以放入
B
的东西,但是
HashMap
不是。以前也有人问过类似的问题。也许
ArrayList
没有扩展
Serializable
?这与
A
扩展(或实现)
B
这一事实密切相关,但这并不意味着
HashMap
扩展了
HashMap
。毕竟,
HashMap
是可以放入
B
的东西,但是
HashMap
不是。以前也有人问过类似的问题。谢谢,我接受了你的建议,现在确实有效了。谢谢,我接受了你的建议,现在确实有效了。
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<?>>