Java 8:stop andThen链

时间:2018-11-27 13:14:00

标签: java java-8 functional-programming

我在Java Project中工作。 我有andthen运算符链,类似:

new xxx().andThen(new yyy()).andThen(new zzz()).apply();

xxx,yyy,zzz都实现了Function接口。

有时候,如果yyy.apply实现中的特定条件为true,则在执行yyy.apply之后,我想停止该过程并在不运行 zzz.apply 的情况下中断。

有什么办法吗?

谢谢。

为了更好地理解,我提供了有关我的案件的详细信息。我无法显示我的代码-这是很长的忙碌逻辑,而且很安全,但是我可以描述一下我的情况: 我的代码目标是从非关系数据库中检索数据列表。 关于检索的逻辑非常复杂。 因此,我根据单独的步骤拆分逻辑,每个步骤由使用者实施。每个消费者都将下一个客户的请求返回给下一个消费者,并执行他所执行的改进。 例如,第一步将其他过滤器添加到源客户端请求中。其他请求分析列(用户要求在网格中显示),并将其转换为DB中的相关列。 我的一位使用者专门针对极端情况,当时我们需要首先从MY-SQL服务器检索数据,然后才需要从非关系数据库继续检索数据。 这就是我有时想停下来的时候。 因为我有时发现,根据从SQL返回的数据,我不知道向用户显示任何数据(即使在DB上也有数据)。 这就是我要停止该链的要点。

1 个答案:

答案 0 :(得分:0)

只需分开进行即可。如果您使用某些流,请执行一个功能,然后将您特定的条件实现为Predicate并执行另一个操作:

stream
    .map(new yyy())
    .filter(specificConditional)  // predicate
    .map(new zzz())
    .collect(Collectors.toList());