Java中的回调vs lambda

问题描述 投票:1回答:2

春豆生命周期documentation经常提到callback methods

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

我很困惑,如果这是回调那么什么是lambda表达式和功能接口?它们是相同还是不同?

java lambda callback
2个回答
3
投票

回调是一种模式,您可以在某处传递函数,稍后调用它。

功能接口是指定您期望的功能类型的一种方式。

lambda是实现功能接口的快捷方式。如果要使用回调,Lambdas非常有用。


例如:

假设我将收到一条消息,并且您想知道它何时发生。我有一个方法,让你给我一个功能,当消息进来时调用。

public void callThisWithMessage(Consumer<String> messageConsumer);

你给我一个消息消费者,我会在消息进来后再调用它。这称为回调。

你可以在这里给我的功能类型是由Consumer接口指定的,这是一个功能接口。接口说它有一个接受参数的方法(在本例中是一个字符串)。

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

callThisWithMessage(msg -> System.out.println("Message received: "+msg));

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


3
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.