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

Meaning of lambda () -> { } in Java

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

并且在代码中有以下行:

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

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

它是一个 Runnablerun 定义为空。这个的匿名 class 表示是:

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

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

() -> System.out.println("This means Lambda expression is not taking any parameters");

(p) -> System.out.println("Lambda expression with one parameter: " + p);

对于 lambda:

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

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

右侧是正文 - lambda 的作用。 {} 中包含此函数所做的一切

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

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

让我们看一下这个例子。

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

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

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