作者:悦md悦小坏蛋 | 来源:互联网 | 2022-12-04 19:37
Spring bean生命周期文档经常提到callback methods
。
在尝试找到回调的含义时,我通过一些链接提到它是将一个函数作为参数传递给另一个,这可以通过Java中的接口来实现。
我很困惑,如果这是回调,那么lambda表达式和函数接口是什么?它们是相同还是不同?
1> khelwood..:
回调是一种模式,您可以在某个地方传递一个函数,稍后再调用它。
功能接口是一种指定所需功能的方式。
Lambda是实现功能接口的快速方法。如果要使用回调,则Lambda很有用。
例如:
假设我将在将来的某个时刻生成一条消息,并且您想告诉它何时发生。我有一个方法,可让您给我一个消息准备好时调用的函数。
public void callThisWithMessage(Consumer messageConsumer);
您给我一个消息使用者,待消息准备好以后再打给我。这是回调的示例。
您可以在此处提供给我的功能类型由Consumer
接口(即功能接口)指定。接口说它有一个接受参数(在这种情况下是字符串)的方法。
如果要使用我的回调服务,则可以使用lambda函数实现使用者。
callThisWithMessage(msg -> System.out.println("Message received: "+msg));
这将创建一个实现函数接口的lambda函数Consumer
,并将其传递给我的方法以进行后续回调。