【发布时间】:2019-04-29 05:55:10
【问题描述】:
我在 Java 项目中工作。 我有一连串的 andThen 运算符,类似于:
new xxx().andThen(new yyy()).andThen(new zzz()).apply();
xxx、yyy、zzz都是实现函数接口。
有时,如果 yyy.apply implementationaion 中的特定条件 为 true,则在执行 yyy.apply 后,我想停止进程并在不运行 zzz.apply 的情况下中断。
有什么办法吗?
谢谢。
为了更好地理解,我详细介绍了我的案例。我无法显示我的代码 - 它是很长的繁忙逻辑并且也很安全,但我可以描述我的情况: 我的代码目标是从非关系数据库中检索数据列表。 检索的逻辑非常复杂。 因此,我根据单独的步骤拆分逻辑,每个步骤由消费者执行。每个消费者将客户端请求连同他执行的改进返回给下一个消费者。 例如,一个步骤将附加过滤器添加到源客户端请求。其他请求分析列(用户要求在网格中显示)并将它们转换为数据库中的相关列。 我的一个消费者是特定于边缘情况的,当我们需要首先从 MY-SQL 服务器检索数据,然后才继续从非关系数据库检索数据。 这就是我有时想停下来的时候。 因为有时我发现在这一点上,根据从 SQL 返回的数据,我不知道向用户显示任何数据(即使在 DB 也有数据)。 这就是我要停止那个链条的地方。
【问题讨论】:
-
.andThen(x -> !x?new zzz().apply(x):x).呢? -
如果
yyy是可选的,你怎么可能知道xxx.apply的返回类型将是zzz函数的输入?也许你可以针对具体问题找到具体的解决方案。总的来说,没有任何事情看起来那么简单,这个问题也需要澄清。 -
在构造函数中将 zzz 传递给 yyy,并在满足“特殊”条件时从 yyy 调用 zzz 的 apply。你知道,andThen 不是 andMaybeThen
-
我已按照您的要求编辑了问题,因为根据您的评论,我知道您不理解我的问题。
标签: java java-8 functional-programming