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

问题描述 投票:25回答:4

我正在看下面的Stack Overflow答案:How to change Spring's @Scheduled fixedDelay at runtime

在代码中有以下行:

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

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

java lambda java-8 java-7 java-9
4个回答
41
投票

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

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

2
投票

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

让我们来看看这个例子。

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

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

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

1
投票

对于lambdas:

左边是争论,你采取什么。附在()中的是该函数所采用的所有参数

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

右侧是身体 - lambda的作用。封闭在{}是这个功能所做的一切

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


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.