小编Max*_*fal的帖子

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

我有两段类似的代码:

void task1() {
    init();
    while(someCondition) {
      doSomething();
    }
    shutdown();
  }
Run Code Online (Sandbox Code Playgroud)
void task2() {
    while(someCondition) {
      init();
      doSomething();
      shutdown();
    }
  }
Run Code Online (Sandbox Code Playgroud)

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

Function setup(Function f){
    init();
    f();
    shutdown();
}
Run Code Online (Sandbox Code Playgroud)
Function loop(Function f){
    while(someCondition) {
      f();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

void task1() {
   setup(loop(doSomething));
 }
Run Code Online (Sandbox Code Playgroud)
void task2() {
    loop(setup(doSomething));
  }
Run Code Online (Sandbox Code Playgroud)

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

java functional-programming java-8

5
推荐指数
1
解决办法
217
查看次数

标签 统计

functional-programming ×1

java ×1

java-8 ×1