Spring生命周期文档经常提到callback methods。
在试图找到回调的意义时,我从几个链接中了解到,回调是将一个函数作为参数传递给另一个函数,这可以通过Java中的接口实现。
我很困惑,如果这是回调,那么lambda表达式和函数接口是什么?他们是一样的还是不同的?
发布于 2018-09-14 08:31:25
回调是一种模式,在这种模式中,您在某个地方传递一个函数,然后调用它。
函数接口是一种指定所期望的函数类型的方法。
lambda是实现功能接口的一种快速方法。如果要使用回调,Lambdas是有用的。
例如:
假设我将在将来的某个时候生成一条消息,而您希望在发生这种情况时被告知。我有一个方法,允许您在消息准备好时给我一个函数来调用。
public void callThisWithMessage(Consumer<String> messageConsumer);您给我一个消息使用者,当消息准备好后,我会打电话给它。这是一个回调的示例。
您可以在这里提供给我的函数类型是由Consumer接口指定的,它是一个函数接口。这个特殊的函数接口表示它有一个接受参数的方法(在本例中是一个字符串)。
如果要使用我的回调服务,可以使用lambda函数实现使用者。
callThisWithMessage(msg -> System.out.println("Message received: "+msg));这将创建一个实现函数接口Consumer<String>的lambda函数,并将其传递给我的方法进行后续回调。
发布于 2018-09-14 08:02:16
Lambda表达式是实现功能接口的几种方法之一。
函数接口用作回调,但并非所有回调都是功能接口。用作回调的接口可以有多个抽象方法,而函数接口只能有一个抽象方法。
https://stackoverflow.com/questions/52327464
复制相似问题