【问题标题】:How to Call user-defined Lambda Function in Java如何在 Java 中调用用户定义的 Lambda 函数
【发布时间】:2020-02-26 16:51:49
【问题描述】:

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

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

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

有什么想法吗?

jshell> Function<String, String> toLowerCase = (var input) -> input.toLowerCase();
toLowerCase ==> $Lambda$16/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> 

【问题讨论】:

标签: java function lambda java-11 jshell


【解决方案1】:

你需要apply的函数如:

toLowerCase.apply(high)

或将其值分配给另一个变量low,如下所示:

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


建议:使用 jshell 自动完成(在 macOS 上使用 tab 键)来确定所有方法适用于在声明的变量上调用。

【讨论】:

    【解决方案2】:

    您创建了一个实例,类型为Function 功能接口,它有一个方法Function.apply()。因此,您必须像在 Java 类中一样使用它:

    toLowerCase.apply(high);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      相关资源
      最近更新 更多