java.util.HashMap.containsKey(Object key)实现是否违反了java.util.Map.containsKey(Object key)文档?

eve*_*zon 10 java interface hashmap

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的值是哈希值(作为a String)但该方法不会抛出Exception.

顺便说一句:4的散列不同于散列"4".

这真的是预期的行为吗?

THX提前!

Men*_*ena 8

这似乎是一个可选限制,不适用于HashMap.

API中所述containsKey:

[...]

抛出: ClassCastException- 如果该地图的密钥类型不合适(可选)

注意"可选",并查看链接文档:

某些集合实现对它们可能包含的元素有限制.例如,某些实现禁止null元素,并且一些实现对其元素的类型有限制.尝试添加不合格的元素会引发未经检查的异常,通常NullPointerExceptionClassCastException.试图查询不合格元素的存在可能会引发异常,或者它可能只是返回false; 一些实现将展示前一种行为,一些将展示后者.更一般地,尝试对不合格的元素进行操作,其完成不会导致将不合格的元素插入到集合中,可以在实现的选择中抛出异常或者它可以成功.此类异常在此接口的规范中标记为"可选".