Java基础———Java中的回调与事件

来源:互联网 发布:java jar命令 编辑:程序博客网 时间:2024/05/29 18:42

1、基本概念

        软件模块之间总是存在一定的联系,各个模块之间总是需要传递信息,eg:当驱动模块检测到键盘上的键被按下时需要通知界面模块。

        回调是一种软件模块之间信息传递的方式。

        当服务方在检测到某种讯息或事件发生时主动通知客户方的机制,eg:驱动模块是服务方,界面模块是客户方。

2、C语言中的回调函数

        回调函数是回调机制的一种实现。

        回调函数是一个通过函数指针调用的函数。

        把函数的指针(地址)作为参数传递给另一个函数。

        函数指针被用来调用它所指向的函数。

        为什么需要回调函数?eg:编写一个通用的数组排序算法,那么在我们编写算法的时候根本不知道数组元素之间如何比较大小关系。这个时候可以将比较大小关系的函数作为回调函数传递。

3、Java中的回调

        Java中没有提供函数指针的机制,也没有独立存在的函数的概念。

        Java中的回调需要通过类和接口来实现。

        实现方法:定义一个类或者接口A

                          在定义的类或者接口中定义一个方法func

                          创建A类的对象并将对象传入服务方

                          在服务方需要的时候调用对象中的方法func

4、Java中的事件处理

        Java中的事件处理主要是通过回调的方式实现。

        Java中事件处理的过程主要涉及以下3类对象:

                事件源:产生事件的地方

                事件:事件本身

                事件监听器:负责监听事件源发生的事件并对其进行处理

        事件源对象必须提供相应的方法设置事件监听器。

5、小技巧

        对于一些只使用一次的继承自其它类的对象,可以采用匿名内部类的方式创建,Java语言中大多数的事件监听对象都采用这种方式创建。


6、总结

        Java中的回调通过接口或类的方式实现。

        回调机制有利于弱化模块之间的耦合性,适合多人合作开发。

        Java中的事件是回调机制的一种应用。

        Java中的事件涉及事件源、事件、事件监听器三个部分。

        事件源只负责产生事件和传递事件对象,不关心如何处理事件。

        事件监听器专用于处理相关的事件对象。

0 0