繁体   English   中英

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

[英]Does java.util.HashMap.containsKey(Object key) implementation violate java.util.Map.containsKey(Object key) documentation?

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<>(); 并使用Integer调用containsKey方法,该值被散列(作为String ),但该方法不会抛出Exception

顺便说一下,4 的散列与“4”的散列不同。

这真的是预期的行为吗?

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

containsKey API所述:

[...]

抛出ClassCastException - 如果该键的类型不适合该映射( 可选

请注意“可选”,并查看链接的文档

一些集合实现对它们可能包含的元素有限制。 例如,有些实现禁止null元素,有些实现对其元素的类型有限制。 尝试添加不合格的元素会引发未经检查的异常,通常为NullPointerExceptionClassCastException 尝试查询不合格元素的存在可能会引发异常,或者可能只是返回 false; 一些实现会表现出前一种行为,而另一些会表现出后者。 更一般地,尝试对不合格元素执行操作,其完成不会导致将不合格元素插入到集合中,这可能会引发异常,或者可能会成功,具体取决于实现的选择。 在此接口的规范中,此类异常被标记为“可选”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM