首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的回调与lambda

问Java中的回调与lambda
EN

Stack Overflow用户
提问于 2018-09-14 07:59:17
回答 2查看 7.8K关注 0票数 8

Spring生命周期文档经常提到callback methods。

在试图找到回调的意义时,我从几个链接中了解到,回调是将一个函数作为参数传递给另一个函数,这可以通过Java中的接口实现。

我很困惑,如果这是回调,那么lambda表达式和函数接口是什么?他们是一样的还是不同的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-14 08:31:25

回调是一种模式,在这种模式中,您在某个地方传递一个函数,然后调用它。

函数接口是一种指定所期望的函数类型的方法。

lambda是实现功能接口的一种快速方法。如果要使用回调,Lambdas是有用的。

例如:

假设我将在将来的某个时候生成一条消息,而您希望在发生这种情况时被告知。我有一个方法,允许您在消息准备好时给我一个函数来调用。

代码语言:javascript
复制
public void callThisWithMessage(Consumer<String> messageConsumer);

您给我一个消息使用者,当消息准备好后,我会打电话给它。这是一个回调的示例。

您可以在这里提供给我的函数类型是由Consumer接口指定的,它是一个函数接口。这个特殊的函数接口表示它有一个接受参数的方法(在本例中是一个字符串)。

如果要使用我的回调服务,可以使用lambda函数实现使用者。

代码语言:javascript
复制
callThisWithMessage(msg -> System.out.println("Message received: "+msg));

这将创建一个实现函数接口Consumer<String>的lambda函数,并将其传递给我的方法进行后续回调。

票数 9
EN

Stack Overflow用户

发布于 2018-09-14 08:02:16

Lambda表达式是实现功能接口的几种方法之一。

函数接口用作回调,但并非所有回调都是功能接口。用作回调的接口可以有多个抽象方法,而函数接口只能有一个抽象方法。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52327464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档