簡體   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