Java回调的理解,

「已注销」 2016-08-08 09:39:11
个人理解:Java中一般方法调用,我们可以通过"Other.fun()"的形式实现,这是单向的。而回调则是双向的,A调用了B的方法,B也有能力调用A的方法,实现了在B中调用A的方法接口(B回调A的方法),实现这种现象的条件,A与B分别持有对方的引用。
简单应用:A实现一个接口I,B提供一个方法接受I,则B就可以通过这个I调用A中实现I的方法,B不需要关心I的接口如何实现,只要知道I中接口能实现什么样的功能就好,I的实现是由A定义的。可参考Java事件监听
...全文
259 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
skgary 2016-08-09
  • 打赏
  • 举报
回复
引用 楼主 baidu_35556382 的回复:
个人理解:Java中一般方法调用,我们可以通过"Other.fun()"的形式实现,这是单向的。而回调则是双向的,A调用了B的方法,B也有能力调用A的方法,实现了在B中调用A的方法接口(B回调A的方法),实现这种现象的条件,A与B分别持有对方的引用。 简单应用:A实现一个接口I,B提供一个方法接受I,则B就可以通过这个I调用A中实现I的方法,B不需要关心I的接口如何实现,只要知道I中接口能实现什么样的功能就好,I的实现是由A定义的。可参考Java事件监听
回调的基本出发点不是两个class相互调用,而是把整个程序 变成异步,从而减少线程的使用。 典型的例子就是nio和io,老的io碰到从网络读时,线程必须等待;而nio则可以在网络上有数据时,回调相应的代码处理数据。从而在连接数较多的情况下,大大减少线程的使用。 更形像的例子是,排队和叫号的区别。排队时,线程只能傻站着,等到满足处理条件的事情发生,而回调(叫号)则是可以在边上呆着,爱干嘛就干嘛,等OK了,就叫你。
soton_dolphin 2016-08-09
  • 打赏
  • 举报
回复
回调函数其实很简单,所有放在参数里的函数都是回调函数, 在调用这个方法时,参数里的这个函数才会被调用
HerveyHall 2016-08-09
  • 打赏
  • 举报
回复
学习下,顺便接分
dracularking 2016-08-09
  • 打赏
  • 举报
回复
double dispatch
NewMoons 2016-08-09
  • 打赏
  • 举报
回复
sky_08_06_02 2016-08-09
  • 打赏
  • 举报
回复
楼上用叫号比拟回调很经典

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧