MultiMap不是完全通用的,你有理由吗?
containsEntry(Object key, Object value)
containsKey(Object key)
remove(Object key, Object value)
removeAll(Object key)
看看这个答案,这对于 Guava 的 Multimap 也是如此。此外,您可能需要阅读Kevin Bourrillion 的博客文章(他是 Guava 首席开发人员)解释相同的问题(注意add
使用泛型类型E
):
真正的区别在于 add() 在使用错误类型调用时会对集合造成“损坏”,而 contains() 和 remove() 则不能。
统一地,Java 集合框架(以及 Google 集合库)的方法从不限制其参数的类型,除非有必要防止集合被破坏。
我猜是因为他们想要一个与原始java.util.Map接口类似的接口