Java 回调函数

概要:
所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R称为注册函数。Web Service以及Java的RMI都用到回调机制,可以访问远程服务器程序。
下面举个通俗的例子:
某天,我打电话向你请教问题,当然是个难题,^_^,你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。这个例子说明了“异步+回调”的编程模式。其中,你后来打手机告诉我结果便是一个“回调”过程;我的手机号码必须在以前告诉你,这便是注册回调函数;我的手机号码应该有效并且手机能够接收到你的呼叫,这是回调函数必须符合接口规范。
通过上面个人感觉到回调更多的应用就是结合异步。比如:Ajax中js通过组件和服务器的异步通信。
例:
程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。目的达到。在C/C++中,要用回调函数,被掉函数需要告诉调用者自己的指针地址,但在Java中没有指针,怎么办?我们可以通过接口(interface)来实现定义回调函数。
假设我是程序员A,以下是我的程序a:
public class Caller
{
public MyCallInterface mc;
public void setCallfuc(MyCallInterface mc)
{
this.mc= mc;
}
public void call(){
this.mc.method();
}
}
我还需要定义一个接口,以便程序员B根据我的定义编写程序实现接口。
public interface MyCallInterface
{
public void method();
}
于是,程序员B只需要实现这个接口就能达到回调的目的了:
public class B implements MyCallInterface
{
public void method()
{
System.out.println("回调");
}
public static void main(String args[])
{
Caller call = new Caller();
call.setCallfuc(new B());
call.call();
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Java
# 回调函数
# 回调函数详解
# 回调函数分析
# Java回调函数原理实例与代理模式的区别讲解
# Java回调函数与观察者模式实例代码
# Java回调函数实例代码详解
# Java通过匿名类来实现回调函数实例总结
# 基于Java 谈回调函数
# Java 回调函数详解及使用
# 再谈java回调函数
# Java中使用回调函数的方法实例
# 回调
# 自己的
# 打手机
# 这是
# 我是
# 我就
# 是个
# 好了
# 我还
# 去了
# 告诉我
# 过了
# 就能
# 不出
# 的说
# 在那里
# 告诉你
# 感觉到
# 但在
# 我又
相关文章:
网站制作说明怎么写,简述网页设计的流程并说明原因?
Thinkphp 中 distinct 的用法解析
建站之星伪静态规则如何正确配置?
南宁网站建设制作定制,南宁网站建设可以定制吗?
PHP 500报错的快速解决方法
如何通过VPS建站实现广告与增值服务盈利?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
如何在IIS管理器中快速创建并配置网站?
建站之星如何助力企业快速打造五合一网站?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
TestNG的testng.xml配置文件怎么写
高性能网站服务器部署指南:稳定运行与安全配置优化方案
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
如何快速搭建响应式可视化网站?
建站上市公司网站建设方案与SEO优化服务定制指南
如何高效利用亚马逊云主机搭建企业网站?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
内部网站制作流程,如何建立公司内部网站?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
建站DNS解析失败?如何正确配置域名服务器?
实例解析angularjs的filter过滤器
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
寿县云建站:智能SEO优化与多行业模板快速上线指南
c++怎么用jemalloc c++替换默认内存分配器【性能】
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
如何在西部数码注册域名并快速搭建网站?
如何在腾讯云免费申请建站?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
打鱼网站制作软件,波克捕鱼官方号怎么注册?
为什么Go需要go mod文件_Go go mod文件作用说明
如何在Golang中指定模块版本_使用go.mod控制版本号
香港服务器建站指南:免备案优势与SEO优化技巧全解析
广东企业建站网站优化与SEO营销核心策略指南
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
东莞专业制作网站的公司,东莞大学生网的网址是什么?
重庆市网站制作公司,重庆招聘网站哪个好?
广州美橙建站如何快速搭建多端合一网站?
如何生成腾讯云建站专用兑换码?
如何在万网自助建站中设置域名及备案?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
官网网站制作腾讯审核要多久,联想路由器newifi官网
如何快速上传自定义模板至建站之星?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
小型网站制作HTML,*游戏网站怎么搭建?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
*请认真填写需求信息,我们会在24小时内与您取得联系。