链接 lambda 函数

2022-09-03 15:38:33

当 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

或者,是否有用于合并函数的实用程序类?

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

答案 1

Java 8 s可以用该方法和Then链接Function

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

请注意,在实际示例中,不会编译,因为该方法不接受任何输入,因此它不符合功能接口(也是如此)。String::trimtrimFunctionString::toUpperCase


答案 2

推荐