Java 向多重映射添加扩展类
我正在尝试创建一个多重贴图,如下所示:Java 向多重映射添加扩展类,java,generics,Java,Generics,我正在尝试创建一个多重贴图,如下所示: Multimap<String, ? extends A> order = LinkedListMultimap.create(); B b = new B(); order.put("key", b); // shows error 错误如下: Multimap<String, ? extends A> order = LinkedListMultimap.create(); B b = new B(); order.put("
Multimap<String, ? extends A> order = LinkedListMultimap.create();
B b = new B();
order.put("key", b); // shows error
错误如下:
Multimap<String, ? extends A> order = LinkedListMultimap.create();
B b = new B();
order.put("key", b); // shows error
类型Multimap
中的方法put(String,capture#2-of?扩展了A)
不适用于参数(String,B)
我应该能够添加一个
B
,因为B
扩展了a
。但是我不能。您不能向顺序添加值,因为它们是关键的
? extends A
编译器不知道下限类型。如果您指的是从
String
到a
类型的对象或a
的任何子类型的多重映射,那么这就是多重映射。如果您指的是从字符串
到a
的某些特定但未知子类型的对象的多重映射,那么这就是a多重映射
,例如,如果C也扩展了a,我想将B和C都添加到多重映射中。为了实现这一点,我是否应该将多重映射配置为?延伸一个??不,你不应该;在这种情况下,您确实需要Multimap
。AMultimap
表示存在扩展A
的特定类型X
,而Multimap
实际上是一个Multimap
,但您不知道X
是什么。您不能将除null
之外的任何值放入多重映射中。