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

lambda()的含义->;Java中的{},java,lambda,java-8,java-7,java-9,Java,Lambda,Java 8,Java 7,Java 9,我正在查看以下堆栈溢出答案: 代码中有以下行: schedulerFuture = taskScheduler.schedule(() -> { }, this); 我想知道lambda()->{}在该代码中是什么意思。我需要在不使用lambdas的情况下编写它。它是一个带有空run定义的函数。此的匿名类表示形式为: new Runnable() { @Override public void run() { // could have done some

我正在查看以下堆栈溢出答案:

代码中有以下行:

schedulerFuture = taskScheduler.schedule(() -> { }, this);
我想知道lambda
()->{}
在该代码中是什么意思。我需要在不使用lambdas的情况下编写它。

它是一个带有空
run
定义的函数。此的匿名类表示形式为:

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

Lambda表达式基本上表示函数接口的实例。 在某种程度上,Lambda表达式将是:(Lambda操作符参数)->{body}

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

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

对于lambdas:

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

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

右侧是身体-lambda的功能。这个函数所做的一切都包含在
{}


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

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

让我们看看这个例子

(inta,intb)->{返回a>b}

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

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

它是一个不执行任何操作的
Runnable
。第一个参数是Runnable,因此您正在传递实例Runnable的匿名类,其中run方法不执行任何操作,即为空。如果没有lambda,您将需要传递一个具有空体的匿名Runnable,如
new Runnable(){@Override public void run(){}
这并不能回答问题-为什么空lambda。“这只是对兰姆达斯的一般解释。”安德烈伊斯,你为什么反对,投票给我的答案。您看到用户在这里询问的内容了吗?让我重复一遍。这里是问题的最后一行:“我想知道lambda()->{}在代码中的意思。我需要在不使用lambdas的情况下编写它。”他被问及与()->{}相关的含义:(包含一位Java设计人员对该习语为什么是
()->{}
而不是
Runnable.noop
的注释)。