Java接口回调机制
1、什么是回调?
一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类同步调用、异步调用和回调。
同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的函数名来调用之,使内存中对应函数B的代码得以执行。
异步调用是一种类似消息或事件的机制解决了同步阻塞的问题,例如 A通知 B后,他们各走各的路,互不影响,不用像同步调用那样, A通知 B后,非得等到 B走完后, A才继续走 。
回调是一种双向的调用模式,也就是说,被调用的接口被调用时也会调用对方的接口,例如A要调用B,B在执行完又要调用A。
2、回调的用途
回调一般用于层间协作,上层将本层函数安装在下层,这个函数就是回调,而下层在一定条件下触发回调。例如作为一个驱动,是一个底层,他在收到一个数据时,除了完成本层的处理工作外,还将进行回调,将这个数据交给上层应用层来做进一步处理,这在分层的数据通信中很普遍。
三、Java实现接口回调
一般采用接口回调的方法来实现:把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被调用类实现的接口的方法。
原理:首先创建一个回调对象,然后再创建一个控制器对象,将回调对象需要被调用的方法告诉控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,自动调用回调对象的方法。
例如老板A对员工B说,我现在交给你一个任务,并且我把我的电话号码给你,你一旦完成任务就给我打电话。
详细的代码如下:
1、创建一个回调接口
public interface CallBack
{public void doEvent();
}
2、创建回调接口的实现类,此例中,员工干完活后还要干什么事情是老板说了算的。
public class Boss implements CallBack
{public void doEvent(){System.out.println("打电话给老板,告知已经完成工作了");}
}
3、创建控制类,也就是本例中的员工对象,他要持有老板的地址(即回调接口)
public class Employee {CallBack callBack;public Employee(CallBack callBack){this.callBack=callBack;}public void doWork(){System.out.println("玩命干活中....");callBack.doEvent();} }
4、测试类
public class TestMain
{public static void main(String[] args){//创建控制器对象,将提供给他的回调对象传入Employee employee=new Employee(new Boss());//启动控制器对象运行employee.doWork();}
}
运行结果截图:
四、Android中的接口回调
在android中回调机制被大量的使用。比如,在Activity中定义了很多生命周期的不同状态要调用的方法,这些方法都是空实现,系统框架要调用,用户也要调用来实现。
举个简单的例子就是Button的点击响应事件实现机制
button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {}});
OnClickListener就是android系统所约好的接口,然后在我们写的应用程序中传入回调对象,这样就可以达到接口统一,实现不同的效果。这种实现机制类似于下面的代码:
public class A
{public void setOnClickListener(OnClickListener onClickListener){onClickListener.onClick();}public interface OnClickListener{public void onClick();}
}
public class B
{public static void main(String[] args){A a=new A();a.setOnClickListener(new OnClickListener(){public void onClick(){// TODO 自动生成的方法存根}});}
}
其中A相当于Button,a即button按钮,B类相当于View。
以上参考了java的相关书籍 和一些论坛的
Java接口回调机制相关推荐
- Java 接口回调机制
日常开发中接口回调机制无处不在,刚开始用时却总是晕晕乎乎,网上也有很多相关的文章介绍,但总是没有看得太明白,今天端午假期正好花时间来总结一下,我们按如下顺序介绍 一.什么是接口回调 在应用开发中,接口 ...
- 回调函数、Java接口回调 总结
回调函数 谈到回调,我们得先从回调函数说起,什么叫回调函数呢? 回调函数是什么? 百度百科的解释:回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针 ...
- Android开发之通过接口回调机制加载数据(源代码分享)
Android开发之通过接口回调机制加载数据的简单实现,在实际开发中通过callback方法得到网络加载的数据的使用频率远比通过直接开启线程或异步任务加载数据的频率高的多,这篇文章的代码将简单实现该机 ...
- android 点击接口回调,带你了解Android接口回调机制
Android接口回调机制 接口回调是在Android中运用广泛的一种机制,你一定会眼熟它,接下来,我们从两个方面来了解接口回调 Android源码 自行动手实际运用 1.从setOnclickLis ...
- 回调java 简书_Java接口回调机制详解【转】
一.回调的含义和用途 1. 什么是回调? 一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类:同步调用.异步调用和回调.同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的 ...
- Java接口回调是个什么玩意儿
java的接口回调,在android下用的是越来越多了,到底该怎么理解他呢? 回调就是外部设置一个方法给一个对象, 这个对象可以执行外部设置的方法, 通常这个方法是定义在接口中的抽象方法, 外部设置的 ...
- Java的回调机制--学习笔记
本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17483273) 所谓回调: 就是A类中调用B类中的某个方法C,然后B ...
- Java接口回调,异步回调理解
文章目录 前言 一.回调简单理解 二.Java中用接口实现回调 1.实现接口回调 1.1同步回调 1.2 异步回调 2.为啥要用接口实现 3.关于接口(基础) 总结 前言 本文是作者在学习接口回调时看 ...
- java 接口回调的例子_java接口回调
java的接口回调原理网上已经有很多生动形象的例子说明了,在此总结一下个人的理解:类A调用类B的方法b(),类B再回调类A的方法a(),其中方法a()是定义在接口中的,由类A来实现.这是一个双向调用的 ...
最新文章
- 民间的 Pokémon 知识图谱
- 直播时代:让IOS普通开发者一天内做出一个RTMP直播客户端,并且带有美艳直播功能。(文章最下面有github源码地址)...
- UniDAC使用教程(二):数据更新
- 学习Python3:201701030
- 阿里云上海ACE同城会 | 数据库前沿技术解读及行业应用
- 洛谷 P1202 模拟 - 黑色星期五 Friday the Thirteenth
- BZOJ2730 HNOI2012 矿井搭建 连通性
- 全国省市编码_地区编码
- 使用EclEmma 插件 解析jacoco.exec文件
- .NET6之MiniAPI(十一):本地化
- 工作总结5:插槽的使用
- 干货:虚拟机兼容性和文件格式详解
- git修改commit注释_【Slog】Git之多人同feature的同分支开发
- “偷师腾讯”,苹果要分游戏这杯羹!| 畅言
- Android NDK 入门与实践
- python面向对象实例王者荣耀_python王者荣耀
- 海康威视实习第一周总结
- android ip v6 teredo,Win7系统通过teredo连接IPv6的方法
- 日常计算机网络基础练习题(每天进步一点点系列)
- 数字媒体是以计算机和网络为基础,03-17 数字媒体艺术概论第一章
热门文章
- mysql8.0.17压缩包安装教程_超详细的MySQL8.0.17版本安装教程
- lookup函数和vlookup_LOOKUP函数与VLOOKUP函数,你总会喜欢一个的
- 寻找百度翻译参数,实现百度翻译
- 记录mysql的配置表误删
- 复旦大学张奇组:对话摘要数据不足?对话数据、文档摘要数据,我全都要!...
- 2021年下半年,你还可以把论文投给这 9 个国际会议
- 消费级GPU、速度提升3000倍,微软FastNeRF实现200FPS高保真神经渲染
- BP反向传播矩阵推导图示详解​
- 全球顶会论文作者,28天手把手带你复现顶会论文
- 从工作的角度,NLP/CV/推荐系统选哪个?