【发布时间】:2016-03-24 17:43:26
【问题描述】:
这个设计决定背后一定有充分的理由或一些历史。或者我可能误解了用例。
背景:Google Guava 有一个Multimap 接口。 get 方法具有签名:Collection<V> get(@Nullable K key)。我预计:Collection<V> get(@Nullable Object key)
通常通用的类似地图的接口接受Object 到get 方法,因为它有助于使用通配符。请参阅 Java 的 Map 接口(和 What are the reasons why Map.get(Object key) is not (fully) generic)。
我有一个方法可以接受带有通配符的 Multimap,例如:void doWork(Multimap<? extends MyKeyType, ? extends MyValueType>)。然而,即使有MyKeyType 参考,我也不能(有效地)调用Multimap.get(? extends MyKeyType)。 (代码不会编译。)
【问题讨论】:
标签: java generics dictionary collections multimap