繁体   English   中英

Java 中 lambda () -> { } 的含义

[英]Meaning of lambda () -> { } in Java

我正在查看以下堆栈溢出答案: 如何在运行时更改 Spring 的 @Scheduled fixedDelay

在代码中有以下行:

schedulerFuture = taskScheduler.schedule(() -> { }, this);

我想知道 lambda () -> {}在该代码中的含义。 我需要在不使用 lambda 的情况下编写它。

它是一个带有空run定义的Runnable 这的匿名类表示将是:

new Runnable() {
     @Override public void run() {
          // could have done something here
     }
}

Lamda 表达式是一个匿名函数,它允许您将方法作为参数或简单地传递,这是一种帮助您删除大量样板代码的机制。 它们没有访问修饰符(私有、公共或受保护),没有返回类型声明,也没有名称。

让我们来看看这个例子。

(int a, int b) -> {return a > b}

在您的情况下,您可以执行以下操作:

schedulerFuture = taskScheduler.schedule(new Runnable() {
     @Override 
     public void run() {
        // task details
     }
}, this);

对于 lambda:

左边是参数,你拿什么。 ()中包含此函数采用的所有参数

->表示它是一个函数,它接受左边的内容并将其传递给右边进行处理

右侧是主体 - lambda 的作用。 包含在{}是此函数所做的一切

弄清楚之后,您只需要知道该构造传递了一个匹配类的实例(看看schedule()调用中预期的参数类型是什么),它是唯一与我们刚刚使用的 lambda 表达式完全相同的方法分析了。

Lambda 表达式基本上表达了函数式接口的实例。 在某种程度上,Lambda 表达式将是:(lambda operator params) -> {body}

() -> System.out.println("这意味着 Lambda 表达式不带任何参数");

(p) -> System.out.println("带一个参数的Lambda表达式:" + p);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM