我刚注意到一件我从未注意过的奇怪事情。 java.util.Map
是通用的,以K, V
参数化。出于某种原因,部分方法将Object
作为参数,我希望它可以是K
或V
。
例如,put方法定义为预期:V put(K key, V value)
。但是获取和删除方法不是:V get(Object key)
和V remove(Object key)
。它们都有一个注释,当密钥无法转换为ClassCastException
时,K
将被抛出。
番石榴库中的Multimap
也是如此,我实际上注意到了这一点。
有人可以解释一下这些方法取代Object
或K
的原因吗?