![](/img/trans.png)
[英]Why does java.util.Map.containsKey throw a null pointer exception for maps which don't support null keys?
[英]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
元素,有些实现对其元素的类型有限制。 尝试添加不合格的元素会引发未经检查的异常,通常为NullPointerException
或ClassCastException
。 尝试查询不合格元素的存在可能会引发异常,或者可能只是返回 false; 一些实现会表现出前一种行为,而另一些会表现出后者。 更一般地,尝试对不合格元素执行操作,其完成不会导致将不合格元素插入到集合中,这可能会引发异常,或者可能会成功,具体取决于实现的选择。 在此接口的规范中,此类异常被标记为“可选”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.