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
的注释)。