我有树类,例如ClassA
,ClassB
,ClassC
。 ClassA
和ClassB
延伸ClassC
。我有两个Multimaps
- Multimap<Integer, ClassA>
和Multimap<Integer, ClassB>
,我想将这两个多重映射合并为一个。我试过找到一些解决方案,但没有成功。我试过了......像Multimap<Integer, ? extends ClassC>
但我不知道我是否正确,如果我可以合并两个多图。有人能帮我吗?感谢您的回复,感谢您的帮助。
答案 0 :(得分:8)
Multimap<Integer, ? extends ClassC>
意味着泛型类型可以是扩展ClassC
的任何类型,但必须修复类型。即,它可以是全部ClassA
,也可以是全部ClassB
。所以你应该使用Multimap<Integer, ClassC>
代替。它会同时接受ClassA
和ClassB
类型。
答案 1 :(得分:6)
Multimap<Integer, ClassC> combine(Multimap<Integer, ? extends ClassC> a, Multimap<Integer, ? extends ClassC> b) {
Multimap<Integer, ClassC> combined = new SetMultimap<Integer, ClassC>(); // or whatever kind you'd like
combined.putAll(a);
combined.putAll(b);
return combined;
}