如何在 Java 中调用用户定义的 Lambda 函数

How to Call user-defined Lambda Function in Java

this tutorial中,我看到了一个用户定义的lambda函数的例子。

Function<String, String> toLowerCase = (var input) -> input.toLowerCase();

我想知道如何调用这个函数?我在 jshell 中尝试过,但我做不到。我可以很好地创建函数:

有什么想法吗?

jshell> Function<String, String> toLowerCase = (var input) -> input.toLowerCase();
toLowerCase ==> $Lambda/0x00000008000b3040@3e6fa38a

但似乎无法执行它:

jshell> String hi = "UPPER";
jshell> String high;
high ==> null

jshell> toLowerCase(high,low);
|  Error:
|  cannot find symbol
|    symbol:   method toLowerCase(java.lang.String,java.lang.String)
|  toLowerCase(high,low);
|  ^---------^

jshell> 

您需要apply函数,例如:

toLowerCase.apply(high)

或将其值赋给另一个变量low,如:

jshell> String low = toLowerCase.apply(high)
low ==> "ggggg"


建议:使用jshell自动完成(在macOS上使用tab键)找出所有方法是什么适用于在声明的变量上调用。

您创建了一个 Function functional interface, which has a method Function.apply() 类型的实例。因此,您必须像在 Java class:

中一样使用它
toLowerCase.apply(high);

toLowerCase(high,low); 中的什么让您认为 low 是什么?与 Java 一样,您必须在可用范围内使用已定义的方法和变量。