作为一个特例 List.of(...)或Collections.unmodifiableList() - 什么是指向一个首选的Java 9方式 空 和 一成不变 清单?
继续写
Collections.emptyList();
或切换到
List.of();
作为一个特例 List.of(...)或Collections.unmodifiableList() - 什么是指向一个首选的Java 9方式 空 和 一成不变 清单?
继续写
Collections.emptyList();
或切换到
List.of();
指向空且不可变列表的首选Java 9方法是什么?
差异是相当微妙的,所以“首选”取决于你想要达到的目标。一些行为差异:
List.of
将抛出异常 contains(null)
如果那些因某些奇怪的原因而发生的调用。emptyList()
在JDK 8和之前,但不是 List.of
。在表达或传达你想要一个空列表, emptyList()
可能看起来更好,但这只是一个临时约定。如果开发者开始使用 List.of()
(比短得多 Collections.emptyList()
那么它将成为一种已知和被接受的方式,它只是新的。如果你考虑一下,我们使用的一些结构并不能总是传达他们自己做的事情,但我们已经习惯了它们。
所以没有严格的首选方式。如果行为无关紧要,请使用您想要的任何内容。
Collections.emptyList()
不需要为每个调用创建一个新对象;这是典型的, 就像在OpenJDK中一样,只是返回单身人士 EMPTY_LIST
目的。此外,您打算更清楚 意思 一个空列表,而不是忘记填写占位符。
使用 emptyList()
;它更快(达到Java目标级别1.9)并且更具可读性。