Spring bean生命周期documentation经常提到callback methods
。
在尝试找到回调的含义时,我通过一些链接提到它是将一个函数作为参数传递给另一个函数,这可以通过Java接口实现。
我很困惑,如果这是回调函数,那么lambda表达式和函数接口是什么?它们是相同还是不同?
答案 0 :(得分:3)
Lambda表达式是实现功能接口的几种方法之一。
功能接口用作回调,但并非所有回调都是功能接口。用作回调的接口可以有多个抽象方法,而功能接口只能有一个抽象方法。
答案 1 :(得分:3)
回调是一种模式,您可以在某处传递一个函数,稍后再调用它。
功能接口是一种指定所需功能的方式。
lambda是实现功能接口的快速方法。如果要使用回调,则Lambda很有用。
例如:
假设我将收到一条消息,而您想知道它何时发生。我有一种方法,可让您给我一个消息传入时调用的函数。
public void callThisWithMessage(Consumer<String> messageConsumer);
您给我一个消息使用者,消息传入时我会稍后调用它。这称为回调。
您可以在此处提供的功能类型由Consumer
接口指定,该接口是功能接口。接口说它有一个接受参数(在这种情况下是字符串)的方法。
如果要使用我的回调服务,则可以使用 lambda函数来实现使用者。
callThisWithMessage(msg -> System.out.println("Message received: "+msg));
这将创建一个实现函数接口Consumer<String>
的lambda函数,并将其传递给用于回调的方法。