做java一年多了,整天听回调回调的,确一直不太理解什么意思,今天兴趣忽至 特此记录下来。

回调 :顾名思义就是 A调用B 的某一个方法b的时候,需要调用到A 的另外某一个方法a。

这是字面上的解释,下面谈一下自己的理解。

用网上大多数人的例子来说:我向你请教一个问题,(A调用B的解答问题方法b()),你一时没想好,说叫我先挂电话,一会儿想好给我回过来。(B的b()方法执行完,需要给A反馈消息的时候,需要调用A的消息通知方法a().)即 你想好问题方法后,需要联系我,这时候你要调用我给你提供的一个电话号码,即你调用我的一个消息通知方法。

你调用 消息方法通知我的 过程 就是回调。 我把电话号码告诉你的过程就是回调函数的注册。

 

这样理解是不是更清晰一点。

其实“回调” 个人觉得 这个名词用在java里面不太合适。因为回调是从脚本语言里“借用过来的概念”。

例如在javascript 当中可以传递一个 方法参数,从而执行这个方法。例如 doSth(tellMes);

这里这个telMeg参数 就是一个回调函数,在doSth里执行 了telMes()方法.

但是在java语言里 不能直接传递一个方法参数,所以就借助 接口这个概念,传递一个“类”类型的参数,实现了一个接口的一个具体的“类”类型的参数,这样借助接口实现这个感念,强制去实现接口里定义的某个方法,达到了“传递一个参数,执行一个方法”的功效。

所以个人以为 回调 应该改为回应 或者响应,因为不存在“回”的意思。只是一个响应的动作。

 

  1.class   A,class   B  

  2.class   A实现接口ICallBack  

  3.class   B拥有一个参数为ICallBack接口类型的函数setCallBack(ICallBack   o)  

  4.class   A运行时调用class   B中setCallBack函数,以自身传入参数  

  5.class   B已取得A,就可以随时回调A所实现的ICallBack接口中的方法