可能重复:
Map.get(Object key)不是(完全)泛型Java Generics 的原因是什么
:为什么Map.get()忽略类型?
Java Map接口声明如下:
Interface Map<K,V>
Run Code Online (Sandbox Code Playgroud)
它有这样一种方法:
boolean containsKey(Object key)
Run Code Online (Sandbox Code Playgroud)
为什么不
boolean containsKey(K key)呢?
相反,List接口有add方法,它接受泛型类型的参数而不是Object:
boolean add(E e).
Run Code Online (Sandbox Code Playgroud)
这与不能向 a 添加任何内容的原因相同List<? extends E>,因为编译器无法保证类型安全(并且类型擦除使运行时检查变得不可能)。
这意味着当您收到 a 时,Map<? extends K,V>您将无法调用contains(K)它。然而,这contains已经足够普遍了,Object向它传递 random 不会损坏接口(但会使一些错误更难以发现)。
| 归档时间: |
|
| 查看次数: |
1246 次 |
| 最近记录: |