有界通配符不适用于Map中插入的List

时间:2011-10-04 12:08:06

标签: java wildcard nested-generics

以下代码解释了我的问题:

interface f1 {}

interface f2 extends f1{}


1. List<? extends f1> l1 = new ArrayList<f2>();

2. Map<String, ? extends f1> m1 = new HashMap<String, f2>();

3. Map<String, List<? extends f1>> m2 = new HashMap<String, List<f2>>();

没有。 1和2工作但没有。 3给出了eclipse错误。它说: Type mismatch: cannot convert from HashMap<String,List<f2>> to Map<String,List<? extends f1>> 你可以帮我找出原因。

1 个答案:

答案 0 :(得分:3)

使用

Map<String, ? extends List<? extends f1>> m2 = new HashMap<String, List<f2>>();