我正在尝试创建一个多图,如下所示:
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
。但我无法做到。
答案 0 :(得分:2)
如果您意味着从String
到A
类型的对象或A
的任何子类型的多图,那么这就是Multimap<String, A>
。如果您指的是从String
到某些特定但未知的子类型A
的对象的多重映射,那么这是Multimap<String, ? extends A>
。
答案 1 :(得分:0)
您无法将值添加到订单,因为它们的键是
? extends A
并且编译器不知道下限类型。