作为List.of(...) or Collections.unmodifiableList()的一个特例 - 指向空和不可变列表的首选Java 9方式是什么?
继续写作
Collections.emptyList();
或切换到
List.of();
答案 0 :(得分:12)
Collections.emptyList()
不需要为每个调用创建一个新对象;通常,as in OpenJDK只返回单个EMPTY_LIST
对象。此外,您打算表示一个空列表而不是忘记填写占位符更清楚。
使用emptyList()
;它更快(达到Java目标级别1.9)并且更具可读性。
答案 1 :(得分:1)
指向空且不可变列表的首选Java 9方法是什么?
差异相当微妙,所以“首选”取决于你想要达到的目标。一些行为差异:
List.of
会在contains(null)
次调用时抛出异常,如果这些异常发生的话。emptyList()
,但不能List.of
。就你想要一个空列表而言,emptyList()
可能看起来更好,但这只是一个临时约定。如果开发人员开始使用List.of()
(比Collections.emptyList()
短得多),那么它将成为一种已知且被接受的方式,它只是新的。如果你考虑一下,我们使用的一些结构并不总能表达他们自己做的事情,但我们已经习惯了它们。
所以没有严格的首选方式。如果行为无关紧要,请使用您想要的任何内容。
答案 2 :(得分:1)
emptyList()
创建一个新的空列表实例仅一次List.of()
比 Collections.emptyList()
更短,但您可以使用像 import static java.util.Collections.emptyList;
这样的静态导入,然后只写 {{ 1}}