如何在Java中链接函数调用?

时间:2020-01-07 13:07:06

标签: java java-8 functional-programming

我有两段相似的代码:

void task1() {
    init();
    while(someCondition) {
      doSomething();
    }
    shutdown();
  }
void task2() {
    while(someCondition) {
      init();
      doSomething();
      shutdown();
    }
  }

我想避免代码重复,我认为可以通过使用功能方法来完成。 我想将循环和init / shutdown调用放在单独的函数中,然后链接它们的调用(不是Java 8 Function接口,更多伪代码):

Function setup(Function f){
    init();
    f();
    shutdown();
}
Function loop(Function f){
    while(someCondition) {
      f();
    }
}

然后我要像这样链接这些:

void task1() {
   setup(loop(doSomething));
 }
void task2() {
    loop(setup(doSomething));
  }

我想到了Java的Function接口中的compose / andThen,但是它们不合适,因为它们只将一个函数的返回值传递给下一个函数。有谁知道如何使用Java 8或其他方法来实现这一点?

0 个答案:

没有答案