簡體   English   中英

Map.of() 與 Collections.emptyMap()

[英]Map.of() vs. Collections.emptyMap()

有沒有之間的差異Map.of()Collections.emptyMap()之間List.of()Collections.emptyList()之間Set.of()Collections.emptySet()

是的,甚至還有的行為,而不是通過返回的集合彼此只是技術上的差異emptyXyz在工廠方法Collections類和新of在接口(引入工廠方法MapListSet )與JDK 9,如果這些與調用沒有爭論。

有關不同的是,由新返回集合of工廠方法禁止null鍵和值(如API文檔中指出,在列表設置地圖接口)。 這可能聽起來與空集合無關,但即使沒有很清楚地記錄,即使是新集合實現中的訪問器方法也會檢查空值。

差異的一些示例:

Collections.emptyList().contains(null)將返回 false,而List.of().contains(null)將拋出NullPointerException

Collection.emptyMap().getOrDefault(null, V)將返回V ,而Map.of().getOrDefault(null, V)將拋出NullPointerException

正如目前在 Oracle 的 JDK 9 中實現的那樣,至少由新工廠方法返回的集合上的以下方法將拋出NullPointerException s,但行為“正常”(就像最初設計和指定集合類以支持空鍵和值一樣) ) 使用Collections類中的舊工廠方法:

  • List.of().contains(null);
  • Set.of().contains(null);
  • Map.of().containsKey(null);
  • Map.of().containsValue(null);
  • Map.of().getOrDefault(null, <any>);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM