将扩展类添加到multimap

时间:2013-04-25 18:53:07

标签: java generics

我正在尝试创建一个多图,如下所示:

Multimap<String, ? extends A> order = LinkedListMultimap.create();
B b = new B();
order.put("key", b); // shows error

其中B

class B extends A {} 

错误如下:

  

put(String, capture#2-of ? extends A)类型中的方法Multimap<String,capture#2-of ? extends A>不适用于参数(String, B)

B扩展B以来,我应该可以添加A。但我无法做到。

2 个答案:

答案 0 :(得分:2)

如果您意味着StringA类型的对象或A的任何子类型的多图,那么这就是Multimap<String, A>。如果您指的是从String到某些特定但未知的子类型A的对象的多重映射,那么这是Multimap<String, ? extends A>

答案 1 :(得分:0)

您无法将值添加到订单,因为它们的键是

? extends A

并且编译器不知道下限类型。