JAVA回调机制(CallBack)详解

什么是回调函数(Callback Function)

回调的应用场景非常广泛,在spring中可以看到很多应用了回调的地方,以调用相应的库函数为例子,当程序跑起来时,一般情况下,应用程序(application program)会时常通过API调用库里所预先备好的函数。很常见的函数调用如:

a.func(Param)

但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback function),这样解释估计还是比较晦涩,下面我讲用一个简单通俗的例子来解释这一术语。

举个栗子(回调的应用场景)

网上解释回调的例子有很多,大多数使用的是“算数问题”,我觉得这个解释是比较通俗易懂的,但是如果只是单单看这种场景,对于工程应用的使用场景还不是很直观,我更多的是想从实际工程应用的角度来阐述这个概念,因此如果想有个大致的概念可以参考下面这个博客的例子:

请戳这里:一个通俗有趣的回调例子(http://www.importnew.com/19301.html)

应用场景如下:

A类在内存中维护了一组词表,A类的定义如下:

定义一个泛形接口,对于返回值和参数都十分的灵活:

应用场景:

好了,上面简单的三个类就是一个回调的应用,所谓的回调函数就是process函数这个函数是被传入后又被调用的,就我自己的理解而言回调有以下优点:

1、非常的灵活,用户可以在匿名内部类中定义自己的实现方法。

2、回调相当于c++中的参数里的函数指针,可以在实现了CallbackInterface接口的类中,或者匿名内部类中改变其他类中的成员变量。

3、回调还出现在button中的监听器里,安卓代码中形式如下:

4、其实定义一个新的线程然后在run方法中实现相应的逻辑也是一种回调。

5、回调的概念其实不难,难在怎么在设计中灵活的运用

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

原文发表时间:2017-10-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏zhisheng

Java研发方向如何准备BAT技术面试答案(上)

1. 面向对象和面向过程的区别 面向过程 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Un...

4034
来自专栏Java学习网

高性能Java解析器实现过程详解

高性能Java解析器实现过程详解 如果你没有指定数据或语言标准的或开源的Java解析器, 可能经常要用Java实现你自己的数据或语言解析器。或者,可能有很多解析...

2906
来自专栏java架构师

Stream篇(2)【TextReader】

说明:一个对于Text的读取器。无论哪种文件类型,其实都是通过一个个char组成的。 这是个抽象类,无法直接实例化 重要方法: 1、void Close() 2...

3289
来自专栏菜鸟计划

vue计算属性详解——小白速会

一、什么是计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如: <div id="exam...

3306
来自专栏小二的折腾日记

day5(面向对象2)

缓冲区的出现是为了提高流的操作效率而出现的。所以在创建缓冲区之前,必须要先有流对象。 为了 提高字符写入流效率,加入了缓冲技术,只要将需要提高效率的流对象作为参...

382
来自专栏屈定‘s Blog

设计模式--Builder模式的思考

在日常开发中总是会遇到多参数的情况,那么对于多参数,尤其是可选参数众多的情况,可能有如下的一些解决方案.

1449
来自专栏IMWeb前端团队

Node基础:url查询参数解析之querystring

本文作者:IMWeb 陈映平 原文出处:IMWeb社区 未经同意,禁止转载 模块概述 在nodejs中,提供了querystring这个模块,用来做u...

2095
来自专栏企鹅号快讯

什么是B-Tree

B-Tree就是我们常说的B树,一定不要读成B减树,否则就很丢人了。B树这种数据结构常常用于实现数据库索引,因为它的查找效率比较高。 磁盘IO与预读 磁盘读取依...

22410
来自专栏老司机的简书

老司机读书笔记——Effective Objective-C 2.0阅读笔记

比方说,在循环中不断地创建的临时对象。即便这些对象在调用完方法之后就就不在使用了,他们也依然处于存活状态,因为目前还在自动释放池里,等待系统稍后将其释放并回收。...

612
来自专栏LIN_ZONE

PHP 常用设计模式 (转载)

单例模式顾名思义,就是只有一个实例。作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

742

扫码关注云+社区