在Java 8中,我越来越多地用Collection
替换Stream
返回值。
所以我曾经拥有过的地方:
public List<Element> getElementList() {
return elements;
}
我现在正在使用:
public Stream<Element> streamElements() {
return elements.stream();
}
我的论点是:
事实上,现在,在我的代码中,返回List
或其他一些集合明确表示用户可能会认为该集合是可变的,并且期望能够更改它。
显然,使用不可变集合可以实现其中一些。
我的问题是:任何人都可以看到这种设计的任何缺点吗?返回Stream
答案 0 :(得分:10)
我不是说你不应该返回一个Stream,更不要说你不应该返回一个Stream,但这样做也有很多缺点:
我会说选择返回流而不是集合也取决于您已经拥有的内容。如果集合已经实现(考虑一个已经实现为OneToMany的JPA实体),我可能会在集合上返回一个不可变的包装器。另一方面,如果要返回的集合是计算或转换另一个集合的结果,则返回Stream可能是更好的选择。
答案 1 :(得分:1)
我可以想到几个案例:
但是很多处理都可以简化。