Java 中 lambda () -> { } 的含义
Meaning of lambda () -> { } in Java
我正在查看以下 Stack Overflow 答案:
How to change Spring's @Scheduled fixedDelay at runtime
并且在代码中有以下行:
schedulerFuture = taskScheduler.schedule(() -> { }, this);
我想知道 lambda () -> {}
在该代码中的含义。我需要在不使用 lambdas 的情况下编写它。
它是一个 Runnable
,run
定义为空。这个的匿名 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);
我正在查看以下 Stack Overflow 答案: How to change Spring's @Scheduled fixedDelay at runtime
并且在代码中有以下行:
schedulerFuture = taskScheduler.schedule(() -> { }, this);
我想知道 lambda () -> {}
在该代码中的含义。我需要在不使用 lambdas 的情况下编写它。
它是一个 Runnable
,run
定义为空。这个的匿名 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);