spr*_*ter 8 java java-8 java-stream
在Java 8中,我越来越多地用Collection返回值替换Stream.
那么我曾经拥有过的地方:
public List<Element> getElementList() {
return elements;
}
Run Code Online (Sandbox Code Playgroud)
我现在正在使用:
public Stream<Element> streamElements() {
return elements.stream();
}
Run Code Online (Sandbox Code Playgroud)
我的论点是:
事实上,现在,在我的代码中,返回一个List或一些其他集合明确地认识到用户可能认为该集合是可变的并且期望能够改变它.
显然,使用不可变集合可以实现其中一些.
我的问题是:任何人都可以看到这种设计的任何缺点吗?返回一个不可变集合有什么优势Stream吗?
JB *_*zet 10
我不是说你不应该返回Stream,更不要说你不应该返回Stream,但是这样做也有很多缺点:
我会说选择返回流而不是集合也取决于你已经拥有的东西.如果集合已经实现(考虑一个已经实现为OneToMany的JPA实体),我可能会在集合上返回一个不可变的包装器.另一方面,如果要返回的集合是计算或转换另一个集合的结果,则返回Stream可能是更好的选择.