Possible Duplicate:
What are the reasons why Map.get(Object key) is not (fully) generic
Java Generics: Why Does Map.get() Ignore Type?
Java Map interface is declared like this:
Interface Map<K,V>
It has such a method:
boolean containsKey(Object key)
Why not
boolean containsKey(K key)?
On the contrary, the List interface has add method that takes parameter of generic type instead of Object:
boolean add(E e).
It’s the same reason why you can’t add anything to a
List<? extends E>because the compiler can’t guarantee the type safety (and type erasure makes a runtime check impossible).This means that when you get a
Map<? extends K,V>you wouldn’t be able to callcontains(K)on it. howevercontainsis general enough that passing randomObjects to it won’t damage the interface (but makes some errors harder to pick up).