Java回调函数
定义(百科):回调函数就是一个被作为参数传递的函数。
理解回调我们需要明白回调是相对谁而言。通常,我们会调用第三方封装好的库(API),这些库对外提供的API中,有的会需要我们提供一个接口实现类,例如:
public class RedisTemplate<K, V> {
public <T> T execute(SessionCallback<T> session) {
// ...这里是一些省略掉代码逻辑
return session.execute(this);
}
}
其中SessionCallback是一个函数式接口:
public interface SessionCallback<T> {
<K, V> T execute(RedisOperations<K, V> operations) throws DataAccessException;
}
当我们调用RedisTemplate的execute方法时,我们需要提供SessionCallback的实现类,而这个接口实现类就会含有一段逻辑代码(抽象方法),再观察RedisTemplate的execute方法,其调用了我们传入的接口实现类中实现的抽象方法,这就是回调函数(定义)。
总结:1、站在第三方库提供的公开API的角度而言,我们这些使用该API的人必须要提供回调函数,而当前API内部不管你实现的逻辑如何,反正我就是会调用。2、再看流程:程序员(调用时传入回调函数)—>第三方API—>程序员提供的回调函数,此过程中站在程序员角度而言,我传给第三方API的函数就是回调函数
|