Stream.collect() 的 JavaDoc 说它返回“减少的结果”。这并没有告诉我这样的代码是否可以为 filteredList
返回 null :
List<String> filteredList = inputList.stream()
.filter(c -> c.isActive())
.collect(Collectors.toList());
我希望如果它可以返回 null 那么它会返回一个 Optional
,但它也没有这样说。
是否在任何地方记录 Stream.collect()
是否可以返回空值?
原文由 Dean Schulze 发布,翻译遵循 CC BY-SA 4.0 许可协议
Collector.toList()
将为您返回一个 空 列表。这是实现:
如您所见
ArrayList::new
被用作您物品的容器。来自 Collector 的 JavaDoc:
和
So as long as you don’t do weird things like combine function return
null
, theCollector
always return at least amutable container
using your providedsupplier
功能。而且我认为,如果实现会返回
null
容器,这是非常违反直觉的。