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 call contains(K)
on it. however contains
is general enough that passing random Object
s to it won't damage the interface (but makes some errors harder to pick up).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With