返回顶部
首页 > 资讯 > 精选 >Java如何实现回调函数
  • 574
分享到

Java如何实现回调函数

java 2023-05-30 23:05:09 574人浏览 独家记忆
摘要

小编给大家分享一下Java如何实现回调函数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在windows中,程序员想让系统DLL调用自己编写的一个方法,于是利用D

小编给大家分享一下Java如何实现回调函数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

windows中,程序员想让系统DLL调用自己编写的一个方法,于是利用DLL当中回调函数(CALLBACK)的接口来编写程序,使它调用,这个就 称为回调。在调用接口时,需要严格的按照定义的参数和方法调用,并且需要处理函数的异步,否则会导致程序的崩溃。

这样的解释似乎还是比较难懂,这里举个简 单的例子:

程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。目的达到。

C/C++中,要用回调函数,被掉函数需要告诉调用者自己的指针地址,但在Java中没有指针,怎么办?我们可以通过接口(interface)来实现定义回调函数。

假设我是程序员A,以下是我的程序a:

public class Caller {  public MyCallInterface mc;  public void setCallfuc(MyCallInterface mc){ this.mc= mc;  } public void call(){ this.mc.method(); } }

我还需要定义一个接口,以便程序员B根据我的定义编写程序实现接口。

public interface MyCallInterface {  public void method();  }

于是,程序员B只需要实现这个接口就能达到回调的目的了:

public class B implements MyCallInterface { public void method() { System.out.println("谁来调用我啊。好寂寞!!");  } public static void main(String args[]) { Caller call = new Caller(); call.setCallfuc(new B());  call.call();  } }

资料二:

所谓回调,就是客户程序C调用服务程序S中的某个方法a,然后S又在某个时候反过来调用C中的某个方法b,对于C来说,这个b便叫做回调函数。

一般说来,C不会自己调用b,C提供b的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的b叫甚名谁,所以S会约定b的接口规范(函数原型),然后由C提前通过S的一个函数r告诉S自己将要使用b函数,这个过程称为回调函数的注册,r称为注册函数。

下面举个通俗的例子:

某天,我打电话向你请教问题,当然是个难题,:),你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。

这个例子说明了“异步+回调”的编程模式。其中,你后来打手机告诉我结果便是一个“回调”过程;我的手机号码必须在以前告诉你,这便是注册回调函数;我的手机号码应该有效并且手机能够接收到你的呼叫,这是回调函数必须符合接口规范。

如果你还不太清楚看看这段描述合和代码:

声明一个接口,另外一个类有方法里面有个参数以是这个接口类型的,而后在另外类中实现这个接口(java中多用的是匿名内部类),而且以这个匿名的类生成的对象为参数传到上面提到类中,而后实现回调.......这种用法可以参考java里面常用到的数据库操作所用到的几个接口.....

//声明一个接口 public interface ICallBack { void postExec(); } //另外一个类有方法里面有个参数以是这个接口类型的 public class FooBar { private ICallBack callBack; public void setCallBack(ICallBack callBack) { this.callBack = callBack; } public void doSth() { callBack.postExec(); } } ---------------------------------------- 回调的实现 public class Test { public static void main(String[] args) { FooBar foo = new FooBar(); foo.setCallBack(new ICallBack() { public void postExec() { System.out.println("method executed."); } }); foo.doSth();//调用函数 } }

资料三:一个利用回调函数的经典例子

下面使用java回调函数来实现一个测试函数运行时间的工具类:

如果我们要测试一个类的方法的执行时间,通常我们会这样做:

java 代码

public class TestObject {    public static void testMethod(){  for ( int i= 0 ; i< 100000000 ; i++){   }  }    public void testTime(){  long begin = System.currentTimeMillis(); //测试起始时间  testMethod(); //测试方法  long end = System.currentTimeMillis(); //测试结束时间  System.out.println("[use time]:" + (end - begin)); //打印使用时间  }  public static void main(String[] args) {  TestObject test=new TestObject();  test.testTime();  }  }

大家看到了testTime()方法,就只有"//测试方法"是需要改变的,下面我们来做一个函数实现相同功能但更灵活:
首先定一个回调接口:

java 代码

public interface CallBack {  //执行回调操作的方法  void execute();  }

 然后再写一个工具类:    

java 代码    

public class Tools {     public void testTime(CallBack callBack) {  long begin = System.currentTimeMillis(); //测试起始时间  callBack.execute(); ///进行回调操作  long end = System.currentTimeMillis(); //测试结束时间  System.out.println("[use time]:" + (end - begin)); //打印使用时间  }   public static void main(String[] args) {  Tools tool = new Tools();  tool.testTime(new CallBack(){  //定义execute方法  public void execute(){  //这里可以加放一个或多个要测试运行时间的方法  TestObject.testMethod();  }  });  }  }

大家看到,testTime()传入定义callback接口的execute()方法就可以实现回调功能

以上是“Java如何实现回调函数”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Java如何实现回调函数

本文链接: https://lsjlt.com/news/222209.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java如何实现回调函数
    小编给大家分享一下Java如何实现回调函数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在WINDOWS中,程序员想让系统DLL调用自己编写的一个方法,于是利用D...
    99+
    2023-05-30
    java
  • ajax如何实现回调函数参数传递
    这篇文章主要介绍ajax如何实现回调函数参数传递,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 属性方法是可以带参数: 复制代码 代码如下:functi...
    99+
    2024-04-02
  • java中回调函数如何使用
    java中回调函数如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。public class Callback {  &n...
    99+
    2023-06-02
  • 如何实现.html()函数的回调方法
    小编给大家分享一下如何实现.html()函数的回调方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 通过JQuery的。ht...
    99+
    2024-04-02
  • PHP 函数如何返回回调函数?
    php 函数可以通过使用以下语法返回回调函数:定义函数以返回回调函数:function returncallback(): callable回调函数可以接受任何参数并返回任何类型的值确保...
    99+
    2024-04-10
    php 回调函数
  • 如何使用 Golang 函数类型实现回调?
    是的,在 go 中可以使用函数类型实现回调功能,具体步骤如下:声明一个函数类型,指定回调函数的签名。定义一个接受函数类型作为参数的函数。将需要回调的函数传递给该函数。 使用 Golan...
    99+
    2024-04-22
    golang 回调
  • 在 PHP 中实现回调函数
    本文将向你展示如何创建一个或多个 callback 函数并使用 PHP 中的不同内置方法、用户定义函数和静态类来执行它们。 在 PHP 中创建一个 callback 函数并使用 call_user...
    99+
    2024-02-27
  • python 回调函数和回调方法的实现分析
    回调与事件驱动 回调函数有比较重要的意义:它在是事件驱动的体现 我们试想一个场景,如果我们触发了某个事件,比如点击事件 那么只要给这个点击事件绑定一个或多个处理事件,也就是回调函数 我们就可以在点击事件被触...
    99+
    2022-06-04
    回调 函数 方法
  • 在Java中如何实现回调过程
    这篇文章主要介绍了在Java中如何实现回调过程,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在Java中实现回调过程XML:namespace prefix = o ns =...
    99+
    2023-06-03
  • C++中怎么实现回调函数
    今天就跟大家聊聊有关C++中怎么实现回调函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C++回调函数代码示例:#include < string>...
    99+
    2023-06-17
  • 基于Java 谈回调函数
    杂谈还是习惯,写点什么之前,都喜欢来点杂谈。最近都在搞微信的开发,终于在昨晚进入测试阶段了,好快就测出 bug 来,但也好快修复了。这也让我更担心。虽说是进入内测阶段,但那代码的结构也真太难看了,还得好好重构一下。迟点得写写关于这微信公众号...
    99+
    2023-05-31
    java 回调函数 ava
  • keras回调函数如何使用
    这篇文章主要介绍了keras回调函数如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇keras回调函数如何使用文章都会有所收获,下面我们一起来看看吧。回调函数回调函数是一个对象(实现了特定方法的类实例),...
    99+
    2023-07-05
  • 如何实现WCF回调
    这篇文章主要为大家展示了“如何实现WCF回调”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何实现WCF回调”这篇文章吧。由于WCF回调方法并非运行在主线程中,如果WCF回调方法需要更新与异步调...
    99+
    2023-06-17
  • PHP函数的回调函数和回调参数
    PHP是一门十分流行的开源编程语言,主要用于web开发。函数是PHP中的一个基本特性,函数的回调函数和回调参数则是函数中比较重要的概念之一。回调函数是指将函数作为参数传递给另一个函数,在另一个函数中通过调用该函数来完成某个操作。回调参数则是...
    99+
    2023-05-18
    回调函数 PHP函数 回调参数
  • Java项目中是如何实现回调的
    这篇文章将为大家详细讲解有关Java项目中是如何实现回调的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。回调回调的概念:举个例子就是,我们想要问别人一道题,我们把题跟对方说了一下,对方说好,...
    99+
    2023-05-31
    java 回调 ava
  • vue如何实现加载完成后的回调函数方法
    这篇文章主要介绍vue如何实现加载完成后的回调函数方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如下所示:var c = new Vue(...
    99+
    2024-04-02
  • javascript如何实现函数返回值
    小编给大家分享一下javascript如何实现函数返回值,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 在javascript中,实现函数返回值的语句是retu...
    99+
    2024-04-02
  • Node.js 中如何使用回调函数
    今天就跟大家聊聊有关Node.js 中如何使用回调函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Node.js 回调函数Node.js 异步编程...
    99+
    2024-04-02
  • VB.NET中回调函数如何使用
    VB.NET中回调函数如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。VB.NET经过长时间的发展,很多用户都很了解VB.NET回调函数了,这里我发表一下...
    99+
    2023-06-17
  • C# 中回调函数如何使用
    本篇文章给大家分享的是有关C# 中回调函数如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。什么是C# 回调函数C# 回调函数是应用程序提供给Windows系统DLL或其它...
    99+
    2023-06-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作