java中的回调函数

简介: java中的回调函数

什么是回调函数?

回调函数就是一个被作为参数传递的函数

为什么有回调函数?

当程序需要运行时灵活性的时候需要引入回调函数

如:

1.调用者不知道具体事件发生时需要调用的具体函数

2.被调函数不知道何时被调用,只知道需要完成的任务

回调机制的原理?

当具体事件发生时,调用者通过函数指针来调用具体函数

回调机制中的调用者和被调函数互不依赖。从而满足了灵活性

如何使用回调函数?

举例:在java中

没有使用回调函数前:

public  void sendMessage()  {
        System.out.println("米老师发消息:请给我开门");
        ReceiveMessager.receiveMessageStatic();
    }

使用回调函数后:

在运行期间通过Class对象调用以传入方法的名字字符串为参数获取到的Method类型的对象,也就是说,根据传入方法的名字可以获取到对应的方法对象,而回调的时候传入一个要执行此方法的对象即可,这里可以理解为将一个参数传入,正是传入的这个对象的信息才决定了要执行哪个对象的此方法,而回调函数本质就是讲一个方法给参数化。

public  void  sendMessage(String classPath,String heMethodPath) {
        System.out.println("我是米老师,请给我开门");
        //(1) 加载类 返回   class 类型的对象classHeClass
        Class classHeClass = Class.forName(classPath);
        //(2、)通过 类型对象 得到加载的类  He类 的对象实例
        Object classHeObject = classHeClass.newInstance();
//        System.out.println("运行类型"+classHeObject.getClass());
        //(3、)通过cls得到你的加载类 he getMessage 的方法对象
        // 在反射中,可以把方法当做对象
        Method heopenMethod = classHeClass.getMethod(heMethodPath);
        //(4)通过heopenMethod调用方法:通过方法对象来实现调用方法
        //反射机制  方法.invoke(对象)
        heopenMethod.invoke(classHeObject);

回调函数的意义

增加程序的灵活性,将原来写死在代码中的耦合关系解开,变成在运行时才确定谁和谁发生关系,这是一种弱耦合。

相关文章
|
Java
什么是java回调函数
什么是java回调函数
165 1
什么是java回调函数
|
7月前
|
JavaScript 前端开发 Java
Java Script中的回调函数,可以用来做什么
Java Script中的回调函数,可以用来做什么
39 0
|
7月前
|
Java 程序员
java回调函数
java回调函数
62 0
java_回调函数Callback
分为了三种回调函数,从简单到难,也挺好理解
127 0
|
JavaScript 前端开发 Java
回调函数 PHP 与 Java
回调函数 PHP 与 Java
113 0
JAVA回调函数简单讲解 CallBack
JAVA回调函数简单讲解 CallBack
420 0
JAVA回调函数简单讲解 CallBack
|
Java 设计模式
Java匿名内部类与回调函数
    之所以将匿名内部类和回调函数两个知识点一起写,是因为最近学习zookeeper的时候正好遇到这么一个例子。详细内容请参考:https://www.w3cschool.cn/zookeeper/zookeeper_api.html 以下是与ZooKeeper集合连接的完整代码。
6190 0
|
Java 程序员 容器
java回调函数
    在WINDOWS中,程序员想让系统DLL调用自己编写的一个方法,于是利用DLL当中回调函数(CALLBACK)的接口来编写程序,使它调用,这个就称为回调。     在Java里面,我们使用接口来实现回调。     所谓的回调,就是程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法
1554 0
|
Java 数据格式 XML
Java中回调函数编写
package XXX.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import org.xmlpull.v1.XmlSerializer; import android.app.ProgressDialog; import android.con
1092 0