java.util.Map.containsKey(Object key)
文档说:
@throws ClassCastException if the key is of an inappropriate type for this map
。
java.util.HashMap.containsKey(Object key)
实施没有说明任何内容。
我的问题:
如果我创建Map<String,String> map = new HashMap<>();
并使用containsKey
调用Integer
方法,则会对值进行哈希处理(作为String
),但该方法不会抛出Exception
1}}。
Btw:4的散列与“4”的散列不同。
这真的是预期的行为吗?
提前THX!答案 0 :(得分:8)
这似乎是一项可选限制,未在HashMap
中应用。
正如API containsKey
中所述:
[...]
<强>抛出强>:
ClassCastException
- 如果该地图的密钥类型不合适(optional)
请注意&#34;可选&#34;,并查看已关联的documentation:
某些集合实现对它们可能包含的元素有限制。例如,某些实现禁止
null
元素,有些实现对其元素类型有限制。尝试添加不合格的元素会引发未经检查的异常,通常为NullPointerException
或ClassCastException
。尝试查询不合格元素的存在可能会引发异常,或者它可能只是返回false;一些实现将展示前一种行为,一些将展示后者。更一般地,尝试对不合格的元素进行操作,其完成不会导致将不合格的元素插入到集合中,可以在实现的选择中抛出异常或者它可以成功。此类例外标记为&#34;可选&#34;在此接口的规范中。