[英]When does Map.keySet return null
我正在閱讀一些代碼,該代碼檢查Map.keySet
返回的值Map.keySet
為null
。 Javadoc沒有對Map.keySet
的返回值進行Map.keySet
。 如果地圖不包含任何內容,則為空集。
Map.keySet
返回的值何時可以為null
?
您所引用的代碼的作者絕對缺乏對Map.keySet
的理解。 正如您所提到的,java文檔顯然沒有聲明keySet
方法將永遠返回null
。
作為示例,我只是看了keySet
方法的HashMap
實現,它的定義為:
public Set<K> keySet() {
Set<K> ks = keySet;
if (ks == null) {
ks = new KeySet();
keySet = ks;
}
return ks;
}
因此,如您所見,從方法返回的值永遠不會為null。
我還檢查了keySet
方法的其他幾種實現,例如TreeMap
, ConcurrentHashMap
等,但找不到任何返回null的方法。
Map.keySet
應該返回null
。 在文檔中隱含了keySet
絕不能為null
,因為它的內容會“跟蹤” Map
的內容:
該集合由地圖支持,因此對地圖的更改會反映在集合中,反之亦然。
如果允許keySet
返回null
則將無法實現。
Java中的Map
標准實現HashMap
和TreeMap
不會從keySet
返回null
。 由於Map
是一個接口,因此可能會開發出不正確的實現,從而為keySet
返回null
。 但是,針對這種可能性進行編程並不是一個好主意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.