lambda()-> {}在Java

时间:2018-09-12 10:24:32

标签: java lambda java-8 java-7 java-9

我正在查看以下堆栈溢出答案: How to change Spring's @Scheduled fixedDelay at runtime

在代码中有以下行:

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

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

4 个答案:

答案 0 :(得分:41)

它是一个Runnable,定义为空的run。匿名类表示为:

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

答案 1 :(得分:2)

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

让我们看一下这个例子。

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

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

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

答案 2 :(得分:1)

对于lambda:

最左边是争论,你要接受什么。 ()中包含了此函数采用的所有参数

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

右侧是身体-lambda的作用。 {}中包含的是此函数执行的所有操作

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

答案 3 :(得分:0)

Lambda表达式基本上表示功能接口的实例。 Lambda表达式将以某种方式成为:(lambda运算符params)-> {body}

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

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