bvd*_*vdb 12 java lambda java-8 java-stream
当Java方法接受a时Function<? super T, ? extends U>
,可以使用如下语法提供方法引用:MyClass::myMethod
.
但是,我想知道是否有一种链接多个方法调用的方法.这是一个说明案例的例子.
// on a specific object, without lambda
myString.trim().toUpperCase()
Run Code Online (Sandbox Code Playgroud)
我想知道是否有语法将其转换为lambda表达式.我希望有类似的东西:
// something like: (which doesn't work)
String::trim::toUpperCase
Run Code Online (Sandbox Code Playgroud)
或者,是否有一个实用程序类来合并函数?
// example: (which does not exist)
FunctionUtil.chain(String::trim, String::toUpperCase);
Run Code Online (Sandbox Code Playgroud)
Java 8 Function
可以使用以下方法链接andThen
:
UnaryOperator<String> trimFunction = String::trim;
UnaryOperator<String> toUpperCaseFunction = String::toUpperCase;
Stream.of(" a ", " b ").map(trimFunction.andThen(toUpperCaseFunction)) // Stream is now ["A", "B"]
Run Code Online (Sandbox Code Playgroud)
请注意,在您的实际示例中,String::trim
由于该trim
方法不接受任何输入,因此无法编译,因此它不符合功能接口Function
(同样适用String::toUpperCase
).
归档时间: |
|
查看次数: |
12006 次 |
最近记录: |