链接 lambda 函数

Chaining lambda functions

当 Java 方法接受 Function<? super T, ? extends U> 时,可以使用如下语法提供方法引用:MyClass::myMethod.

但是,我想知道是否有一种方法可以链接多个方法调用。 下面举个例子来说明一下。

// on a specific object, without lambda
myString.trim().toUpperCase()

我想知道是否有语法可以将其转换为 lambda 表达式。我希望有如下内容:

// something like: (which doesn't work)
String::trim::toUpperCase

或者,是否有合并功能的实用程序class?

// example: (which does not exist)
FunctionUtil.chain(String::trim, String::toUpperCase);

Java 8 Functions 可以用方法 andThen:

链接起来
UnaryOperator<String> trimFunction = String::trim;
UnaryOperator<String> toUpperCaseFunction = String::toUpperCase;
Stream.of(" a ", " b ").map(trimFunction.andThen(toUpperCaseFunction)) // Stream is now ["A", "B"]

请注意,在你的实际例子中,String::trim不会编译,因为trim方法不接受任何输入,所以它不符合功能接口Function(同String::toUpperCase).