[英]List.of() or Collections.emptyList()
作為List.of(...) 或 Collections.unmodifiableList()的特例——Java 9 指向一個空且不可變的列表的首選方式是什么?
繼續寫
Collections.emptyList();
或切換到
List.of();
Collections.emptyList()
不需要為每次調用創建一個新對象; 就像在 OpenJDK中一樣,通常只返回單例EMPTY_LIST
對象。 此外,更清楚的是,您打算表示一個空列表,而不是忘記填寫占位符。
使用emptyList()
; 它既更快(達到 Java 目標級別 1.9)又更具可讀性。
指向空且不可變列表的首選 Java 9 方式是什么?
差異相當微妙,因此“首選”取決於您想要實現的目標。 一些行為差異:
List.of
將在contains(null)
調用上引發異常。emptyList()
,但不能反序列化List.of
。 就或傳達您想要一個空列表而言, emptyList()
可能看起來更好,但這只是一個臨時約定。 如果開發人員開始使用List.of()
(比Collections.emptyList()
短得多),那么它將成為一種已知和接受的方式,它只是新的。 如果你想一想,我們使用的一些結構並不總是能傳達它們自己所做的事情,但我們已經習慣了它們。
所以沒有嚴格的首選方式。 如果行為無關緊要,請使用您想要的任何東西。
emptyList()
只創建一次新的空列表實例List.of()
比Collections.emptyList()
短,但您可以使用靜態導入,如import static java.util.Collections.emptyList;
然后只寫emptyList()
從 JDK 11 開始,如果查看源代碼,您會看到List.of()
使用一次性初始化的空列表,類似於Collections.emptyList()
。 所以,我更喜歡使用List.of()
因為:
List.of(E... elements)
(你應該) 來處理非空列表,你可以使用List.of()
來處理空列表,享受統一的觀感,擺脫大部分工廠集合API 中的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.