目录
注意:本文参考 Java的回调-由浅入深(保证简单易懂)_fengye454545的博客-CSDN博客_java回调
回调简介
回调是个很简单的机制。在这里我用简单的语言先来解释一下:假设有两个类,分别是A和B,在A中有一个方法a(),B中有一个方法b();
在A里面调用B中的方法b(),而方法b()中调用了方法a(),这样子就同时实现了b()和a()两个方法的功能。
疑惑:为啥这么麻烦,我直接在类A中的B.b()方法下调用a()方法就行了呗。
解答:回调更像是一个约定,就是如果我调用了b()方法,那么就必须要回调,而不需要显示调用
一句话解释回调:当前方法有一段逻辑,需要调用者来决定怎么执行。这段逻辑肯定不能写死,所以需要一个接口,来解耦当前方法和调用者!
什么是回调函数(Callback Function)
回调的应用场景非常广泛,在spring中可以看到很多应用了回调的地方,以调用相应的库函数为例子,当程序跑起来时,一般情况下,应用程序(application program)会时常通过API调用库里所预先备好的函数。很常见的函数调用如:
a.func(Param)
但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback function),这样解释估计还是比较晦涩,下面我讲用一个简单通俗的例子来解释这一术语。
举个栗子(回调的应用场景)
网上解释回调的例子有很多,大多数使用的是“算数问题”,我觉得这个解释是比较通俗易懂的,但是如果只是单单看这种场景,对于工程应用的使用场景还不是很直观,我更多的是想从实际工程应用的角度来阐述这个概念,因此如果想有个大致的概念可以参考下面这个博客的例子:
请戳这里:一个通俗有趣的回调例子(http://www.importnew.com/19301.html)
应用场景如下:
A类在内存中维护了一组词表,A类的定义如下:
定义一个泛形接口,对于返回值和参数都十分的灵活:
应用场景:
好了,上面简单的三个类就是一个回调的应用,所谓的回调函数就是process函数</