[英]Map.of() vs. Collections.emptyMap()
有沒有之間的差異Map.of()
和Collections.emptyMap()
之間List.of()
和Collections.emptyList()
之間Set.of()
和Collections.emptySet()
是的,甚至還有的行為,而不是通過返回的集合彼此只是技術上的差異emptyXyz
在工廠方法Collections
類和新of
在接口(引入工廠方法Map
, List
, Set
)與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.