【发布时间】:2015-03-25 17:39:13
【问题描述】:
在 Java 8 中,我越来越多地将 Collection 返回值替换为 Stream。
所以我曾经拥有的地方:
public List<Element> getElementList() {
return elements;
}
我现在正在使用:
public Stream<Element> streamElements() {
return elements.stream();
}
我的论点是:
- 它强制底层列表的不变性
- 它隐藏了有一个底层列表的事实。以后可以在不更改方法签名的情况下将其更改为集合或其他结构。
- 它很好地封装了该方法的用户应该对项目而不是列表执行某些操作。
- 如果需要,以后可以简单地并行化。
事实上,现在,在我的代码中,返回 List 或其他一些集合明确表示用户可能认为该集合是可变的,并且可以更改它。
显然,其中一些可以通过不可变集合来实现。
我的问题是:任何人都可以看到这种设计的任何缺点吗?与返回 Stream 相比,不可变集合有什么优势吗?
【问题讨论】:
-
@BrianGoetz 请给我你的签名:P
标签: java java-8 java-stream