理解andThen()函数

yas*_*eco 1 java functional-programming java-8

考虑以下示例:

public static void main(String[] args) {
    Function<String, Integer> f1 = str ->  str.length();
    f1.andThen(i -> {
        System.out.println("length is " + i);
        return "why do I need to return a String here?";
    }).apply("12345");
}
Run Code Online (Sandbox Code Playgroud)

我试图理解为什么我必须返回String

这背后的逻辑是什么?我希望这andThen会接受Consumer<Integer>让我们说或类似的东西。

那么为什么andThen()要求我返回原始输入的类型呢?

Mic*_*ael 5

你想要的可以通过

Function<String, Integer> f1 = str ->  str.length();
Consumer<Integer> printer = i -> System.out.println("length is " + i);
printer.accept(f1.apply("12345"));
Run Code Online (Sandbox Code Playgroud)

andThen用于将函数链接在一起。函数总是有结果的。