【发布时间】:2021-03-05 00:02:59
【问题描述】:
如果我在两个流中有一个共同的操作序列,如何共享它们以避免重复代码?到目前为止,我发现我可以使用:
Stream<U> commonSequence(Stream<T> upstream) {
return upstream.op1().op2().op3()
}
然后把它当作
commonSequence(upStream()).downStream()
但是事情并没有真正按照它们发生的顺序来写。我是否忽略了一些可以让我编写如下内容的技巧:
upStream().wrap(commonPart).downStream()
【问题讨论】:
-
你检查过这个答案吗:stackoverflow.com/questions/24474838/… 它似乎解决了一个类似(如果不一样)的问题?
-
我不认为这是相同的:这是对同一个流执行两个不同的操作,而 OP 想对多个流执行相同的操作。
-
你能说得更具体一点吗?操作?
-
但是我不会再担心“按照它们发生的顺序”写东西,我们习惯于将参数值视为在应用它们传递给的函数之前计算的东西。
-
对您来说可能不是一个实用的选择,但 Groovy 和 Kotlin 支持 扩展方法 正是这种用例。
标签: java java-stream