作为List.of(...) 或 Collections.unmodifiableList()的特例——Java 9 指向空且不可变列表的首选方式是什么?
继续写
Collections.emptyList();
或切换到
List.of();
作为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()
在 JDK 8 和更早版本上反序列化,但不能在List.of
.就或传达您想要一个空列表而言,emptyList()
可能看起来更好,但这只是一个临时约定。如果开发人员开始使用List.of()
(比 短得多Collections.emptyList()
),那么它将成为一种已知和接受的方式,它只是新的。如果你想一想,我们使用的一些结构并不总是能传达它们自己所做的事情,但我们已经习惯了它们。
所以没有严格的首选方式。如果行为无关紧要,请使用您想要的任何东西。
emptyList()
仅创建一次新的空列表实例List.of()
比短,Collections.emptyList()
但你可以使用静态导入import static java.util.Collections.emptyList;
,然后只写emptyList()