`

zz Java 回调函数(方法)

 
阅读更多

在C或者C++中回调函数的定义:

程序在调用一个函数时,将自己的函数的地址作为参数传递给程序调用的函数时(那么这个自己的函数称回调函数)


Java中没有指针,不能传递方法的地址,一般采用接口回调实现把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。

 

实现回调的原理简介如下

首先创建一个回调对象,然后再创建一个控制器对象,将回调对象需要被调用的方法告诉控制器对象。控制器对象负责检查某个场景是否出现或某个条件是否满足。当此场景出现或此条件满足时,自动调用回调对象的方法

可以举个现实生活中的例子:

一读者想借《软件技术学习与实践》这本书,但这本书已被其他读者借走了。于是,读者与图书馆管理员间发生了以下对话:

读者:“我把我的电话号码告诉你,等书一到就马上通知我。”

管理员:“好的。另一读者把书还回来后,马上给您打电话,书我先帮您留着。”

在上述这个场景中,读者就是“回调对象”,管理员就是“控制器对象”,读者的电话号码就是“回调对象的方法”

详细的实例如下:

1、创建一个回调接口:

1 //回调接口
2  public interface ICallBack
3
{
4 void
run();
5 }

2、创建回调接口的实现类:

1 class CallBackClass implements ICallBack
2 {public void
run()
3
{
4  //输出当前时间

5   System.out.println(System.currentTimeMillis() );
6
}
7 }

3、创建控制类

1 class Controller
2
{
3 public ICallBack CallBackObject = null;// 引用回调对象

4 Scanner input = new Scanner(System.in); //读取命令行输入
5 public Controller(ICallBack obj)
6
{
7 this.CallBackObject =
obj;
8
}
9 public void
Begin()
10
{
11 while(input.next() != null)//判断是否有输入

12 {
13
CallBackObject.run();
14
}
15
}
16 }

运行程序:

1 class Program
2
{
3 static void
Main(string[] args)
4
{
5 //创建控制器对象,将提供给它的回调对象传入

6 Controller obj = new Controller(new CallBackClass());
7 //启动控制器对象运行

8 obj.Begin();
9
}
10 }

在控制器类中引用了回调对象,因此就能调用回调方法,当控制器进行某些判断之后(如:监听鼠标单击操作)就会自动调用回调方法!简易流程图如下:


分享到:
评论

相关推荐

    base zz zz zz zz

    base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz

    阿里巴巴java笔试zz.

    阿里巴巴的Java笔试题尤为注重这一点,即使部分题目与直接的编程技能无直接关联,但通过这些题目的考察,可以有效地筛选出具备成为优秀Java开发者的潜质的人才。 首先,类似于肯尼迪总统讲话假设这类题目,考察求职...

    基于Java与HTML的studyjava-zz设计源码,深入探索Java编程新视野

    该项目为“studyjava-zz”设计源码,深入探索Java编程新视野,共计包含549个文件,涵盖209个Java源代码文件、74个Git忽略文件、70个项目配置文件、68个classpath文件、66个偏好设置文件、25个Markdown文档、16个XML...

    Zz: java 线程池设计思想

    了解线程池的设计思想后,开发者可以利用`Executors`类提供的静态工厂方法快速创建线程池,如`newFixedThreadPool`、`newSingleThreadExecutor`、`newCachedThreadPool`等。但需要注意的是,这些预定义的线程池可能...

    java实现logistic回归算法

    在Java中,你可以先定义一个数据类,然后创建一个LogisticRegression类,包含初始化、训练、预测等方法。训练过程中,你需要实现梯度上升法或优化算法,每次迭代更新权重。预测时,使用Sigmoid函数计算概率并根据...

    zz.rar_JAVA俄罗斯方块

    本项目“zz.rar_JAVA俄罗斯方块”提供了一套完整的JAVA源代码,让开发者可以深入理解如何用JAVA语言实现这个经典游戏。本文将详细解析该项目中的关键知识点,帮助读者更好地理解和掌握JAVA编程技巧。 1. **JAVA基础...

    RabbitMQ_Java

    当队列中有新消息时,RabbitMQ会回调预先设置的回调函数,处理消息。 7. **消费消息**:在回调函数中,可以获取消息内容,并进行相应的业务处理。处理完成后,需要确认消息已被消费,通常使用`channel.basicAck`...

    聊天工具的java开发 超越QQ 天翔ZZ

    《聊天工具的Java开发:超越QQ,天翔ZZ》 在IT行业中,开发一款聊天工具是一项挑战性十足的任务,尤其当目标是超越如QQ这样的巨头时。本文将深入探讨使用Java语言开发聊天工具的关键知识点,结合"天翔ZZ"这个项目,...

    (zz)java集合类总结

    ### Java集合类总结 在Java开发中,集合类(Containers)是极其重要的组成部分,它们作为开发者日常编程不可或缺的工具,不仅让代码变得更加简洁、高效,还能显著提升程序的功能性和灵活性。本文将对Java标准类库中...

    基于java的招聘求职系统-886zz792.zip

    基于java的招聘求职系统_886zz792.zip

    ZZ561401.CAB

    ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB

    超出NLO QCD的高横向动量的ZZ产生

    使用LoopSim方法,我们合并ZZ和ZZ + jet的NLO QCD结果,并获得ZZ产生的近似NNLO预测。 还包括对ZZ过程的精确胶子融合环平方的贡献。 最重要的是,我们将来自胶子-胶子通道的胶子-融合ZZ + jet贡献添加到我们的合并...

    ZZ Fibo Trader - MetaTrader 5EA.zip

    ZZ Fibo Trader 是一款专为 MetaTrader 5(MT5)平台设计的自动交易专家顾问(EA),其核心在于结合了斐波那契回调线分析和抛物线止损系统,为交易者提供了智能化的交易策略。本文将深入探讨这款EA的设计理念、功能...

    zz牌类小游戏24点

    "zz牌类小游戏24点" 是一个基于Java编程语言开发的桌面游戏,其核心玩法是24点游戏。24点游戏是一种流行的心算游戏,玩家需要利用四张给出的扑克牌上的数字,通过加、减、乘、除运算,使得结果等于24。这个游戏旨在...

    wincc AX NF ZZ

    wincc SIMATIC WinCC是第一个使用最新的32位技术的过程监视系统,具有良好的开放性和灵活性。 从面市伊始,用户就对SIMATIC WinCC印象深刻。

    使用Java 8函数式编程生成字母序列

    在 Java 8 中使用函数式编程生成字母序列是一个很大的挑战。Lukas Eder 愉快地接受了这个挑战,他将告诉我们如何使用 Java 8 来生成ABC的序列——当然,肯定不是一种蹩脚的方式。  我被 Stack Overflow 上网友...

    中医大夫助理信息系统 zz-doctor

    《中医大夫助理信息系统 zz-doctor 深度解析》 中医大夫助理信息系统“zz-doctor”是一款基于Android平台的应用程序,旨在为中医医生提供智能化、便捷化的诊疗辅助工具。通过深入剖析这款应用的源码,我们可以了解...

    fizzbuzz:Java FizzBu​​zz

    在存储库中的不同实现可能包含使用switch语句、使用函数或方法来封装逻辑、或者使用更复杂的条件组合,以展示不同编程风格和技巧。 项目中将这些实现打包在一起,意味着你可以比较各种解决方案,理解它们的优缺点,...

    zz CAD快速计算长度插件

    在CAD中想要快速测量长度,在CAD工具栏找到加载应用程序,再点击加载 加载成功后在输入栏输入“zz”(不分大小写)在选择你需要测量的线段即可。

Global site tag (gtag.js) - Google Analytics