首页 > 编程语言 >java中的回调函数

java中的回调函数

时间:2023-02-04 11:36:09浏览次数:47  
标签:调用 java 函数 对象 classHeClass 回调 方法


什么是回调函数?

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

为什么有回调函数?

当程序需要运行时灵活性的时候需要引入回调函数
如:
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,函数,对象,classHeClass,回调,方法
From: https://blog.51cto.com/u_15845711/6036997

相关文章

  • Mysql 中的日期时间函数汇总
    日期和时间函数MySQL中内置了大量的日期和时间函数,能够灵活、方便地处理日期和时间数据,本节就简单介绍一下MySQL中内置的日期和时间函数。1CURDATE()函数CURDATE()函数用......
  • 虚函数与多态
    虚函数:C++中的虚函数的作用主要是实现了多态的机制。虚函数是一种在基类定义为virtual的函数,并在一个或多个派生类中再定义的函数。虚函数的特点是,只要定义一个基类的指针,就......
  • Java程序设计基础复习题
    Java程序设计基础1-6一、Java语言概述1.Java语言有哪些特点?简单易学。Java去掉了C/C++语言支持的单个不易理解和掌握的数据类型(指针pointer、联合体unions、结构体stru......
  • c++函数
    一,函数基础1.函数一般用一个名字表示,即函数名。返回类型,函数名,参数列表,和函数体构成了函数定义。函数定义的语法形式类型说明符 函数名(含类型说明的形式参数表){ 函数体}......
  • Java底层 - JVM 工具
    Java底层-JVM工具一、JVisualVM JVisualVM是JDK自带的性能检测工具,路径在%JAVA_HOME%/bin下面。mac下启动:直接使用jvisualvm命令即可打开界面。windows下启动:......
  • 关于#java#的问题:为什么hello world就报错了
    提问: 刚开始学java,为什么helloworld就报错了?求解疑。      解答: 你的eclipse创建的项目有问题,连libary都没有,这就是一个文件,它是无法运行的,需要依......
  • 模拟实现不受限制的字符串函数--C语言版
    C语言中提供了许多十分好用的库函数,一旦我们掌握了它们,我们使用C语言写代码就会变得更加得心应手。1.strlenstrlen函数就是计算字符串的长度的,它会一直读取到\0,它的返回值就......
  • 【c/c++】isdigit()函数
    isdigit函数isdigit是计算机C(C++)语言中的一个函数,主要用于检查其参数是否为十进制数字字符。函数定义:​​intisdigit(intc)​​​函数说明:​​检查参数是否为十进制......
  • 蓝桥杯JavaB组
    蓝桥杯JavaB组2013年3.振兴中华入门dfs/**题目描述:小明参加了学校的趣味运动会,其中的一个项目是:跳格子。地上画着一些格子,每个格子里写一个字,如下所示:(也可参见1.png)比赛......
  • #yyds干货盘点#再聊JS函数柯里化
    一、定义:柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。通过一个简单的例子......