`
gaoke
  • 浏览: 86768 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 回调机制原理及示例

 
阅读更多

今天讲的内容重点是回调机制,这是java里面动态绑定的又一面貌。
    动态绑定:我们用父类的引用指向子类的对象,Father father = new Son();,内存上,是一个叠加的原理。子类继承于父类,重写父类里面的方法。从而达到我们可以根据传递的子类对象而实现不一样的业务处理。
    java的回调机制的原理,用很有吸引的一个标题讲解,就像是好莱坞原则一样:Don't call me,I will call you.讲的是:应聘者不用找公司方,当公司方需要你这个演员时,会自己找到你的。
编程上来说,一般使用一个库或类时,是程序员去调用事先定义好的API,这个叫Call。有的时候这样不能满足需要,需要程序员注册自己的程序(比如一个对象),然后让事先定义好的API在合适的时候来调用程序员写的方法,这叫Callback。
回调,从字面上我们可以看出,这是一种双向调用模式。被调用方在接口被调用时也会调用对方的接口。
技巧在于:定义一个简单的接口,并在接口中声明我们要调用的方法。
    举例如下所示:
定义的接口:
public interface InterestingEvent {
   public void interestingEvent();
}
实现接口的代码如下:
public class CallMe implements InterestingEvent {
       public CallMe() {
   }
   public void interestingEvent() {
       System.out.println("实现了打印!")
  }
}
public class CallYou implements InterestingEvent {
      public CallYou() {
   }
public void interestingEvent() {
 
     System.out.println("实现了查询!");
}
}
发出事件信号的类必须等待实现了 InterestingEvent 接口的对象,并在适当时候调用 interestingEvent() 方法。
public class EventNotifier {
private InterestingEvent ie;
private boolean somethingHappened ;
public EventNotifier() {
 somethingHappened = true ;
}
public void setInterestingEvent(InterestingEvent ie){
 this.ie = ie ;
}
public void doWork(){
 if(somethingHappened){
  ie.interestingEvent();
 }
}
}
测试:
public class Test {
public static void main(String[] args) {
 CallMe cm = new CallMe();  //待回调用的对象1
 CallYou cy = new CallYou(); //待回调用的对象2
 EventNotifier en = new EventNotifier(); //回调事件主体对象,此例在构造函数阶段进行事件触发标识
 en.setInterestingEvent(cm); //将待回调对象1设置到主体方法内
 en.doWork(); //当执行主体对象的方式时,检测标识是否为真,如果为真,则同时调用了待回调对象1的实现//接口预先定义的方法
 en.setInterestingEvent(cy);//将待回调对象2设置到主体方法内
 en.doWork();//当执行主体对象的方式时,检测标识是否为真,如果为真,则同时调用了待回调对象1的实现//接口预先定义的方法
}
}

 

分享到:
评论

相关推荐

    Java/Android回调机制小示例

    在这个“Java/Android回调机制小示例”中,我们将深入探讨回调的基本概念、工作原理以及如何在实际项目中应用。 首先,让我们理解什么是回调。回调本质上是将一个函数作为参数传递给另一个函数,这个被传递的函数会...

    给初学者的java回调demo

    Java回调是一种设计模式,它是当一个对象调用另一个对象的方法时,被调用对象通过某种方式在完成操作后反过来调用调用者的方法,这种机制就是回调。在Java中,回调通常通过接口或者抽象类来实现。这篇"给初学者的...

    微信企业号回调模式实例(Java版)

    在提供的"微信企业号回调成功案例及资料"压缩包中,可能包含详细的步骤指南、示例代码、签名验证算法等资源,这对于理解和实践微信企业号回调模式非常有帮助。通过仔细阅读和学习,你可以掌握整个流程,并在实际项目...

    Java 回调函数详解及使用.rar

    本篇将深入探讨Java回调函数的概念、工作原理以及如何在实际开发中应用。 ### 回调函数的概念 回调函数,顾名思义,就是"被回调的函数"。在Java中,当一个方法执行完毕后,它可能需要调用另一个方法来通知调用者或...

    Java 回调函数详解及使用.docx

    在Java中,由于没有像C++那样的函数指针,回调机制是通过接口来实现的。下面我们将深入探讨Java回调函数的概念、实现方式以及使用技巧。 首先,理解回调函数的基本原理非常重要。回调函数本质上是一种将控制权转移...

    Java简单的回调(interface)demo

    在Java中,通常通过接口来实现回调机制,这正是“Java简单的回调(interface)demo”所展示的。下面我们将深入探讨这个主题。 首先,理解回调的基本原理。回调允许我们在方法执行完成后执行自定义代码,而无需等待...

    回调方法的概念和代码

    这些模式都是基于回调机制实现的。 - **观察者模式**:允许对象集合注册它们自己作为观察者。当主题的状态发生改变时,所有的观察者都会得到通知并被自动更新。 - **事件监听器**:用于处理各种事件,如用户界面中...

    扫码枪微信支付当面付 JAVA demo 案例示例

    这个Java demo案例是专门为实现扫码枪与微信支付的集成而设计的,它提供了一个完整的流程示例,帮助开发者快速理解和实现这一功能。 1. **扫码枪技术原理**: 扫码枪通过读取条形码或二维码,将其中的信息转化为...

    简单的回调demo

    回调机制允许我们注册一个函数,这个函数会在某个特定条件满足或某个事件发生时被调用。这种方式使得程序能够处理非同步操作的结果,或者在完成某个任务后执行后续的逻辑。 在JavaScript、Java、C#等编程语言中,回...

    线程回调demo

    在Android开发中,由于主线程(UI线程)不能执行耗时操作,回调机制尤为重要,因为它可以帮助我们保持界面的响应性。下面我们将详细探讨线程回调的概念、工作原理以及如何在Java和Android中实现。 1. **线程回调...

    JNA实现回调及其他

    总结,JNA作为Java与本地代码交互的桥梁,通过其回调机制和丰富的映射功能,极大地简化了跨语言编程。"JNA实现回调及其他"的主题涵盖了JNA的核心特性和应用实践,对于理解JNA的工作原理和使用技巧具有重要意义。

    JNI回调函数,java和c方法相互调用

    4. **回调函数原理**:在JNI中,回调机制通常是通过在本地代码中保存对Java对象的引用,然后在适当的时候通过这个引用调用Java的方法。这需要理解`jobject`、`jclass`、`jmethodID`等数据类型,以及如何使用`...

    android回调demo

    在Android开发中,回调机制是一种常见的编程模式,用于处理异步操作或事件响应。这个“android回调demo”是为了帮助开发者直观地理解回调是如何工作的。在这个简单的示例中,我们将探讨回调的基本概念、如何在...

    Android-Socket长连接通信心跳包消息回调Java服务端

    本主题将深入探讨如何实现“Android-Socket长连接通信心跳包消息回调Java服务端”的技术细节。 首先,我们需要理解Socket通信的基本原理。Socket是网络编程中的一个概念,它为应用程序提供了一种在两台机器间建立...

    CallBack_DEMO 回调

    在本示例"CallBack_DEMO"中,我们可能正在探讨如何在Java或其他编程语言中实现回调机制。回调通常与异步编程相关,尤其是在处理I/O操作、网络请求或者时间事件时,它能让程序在执行完成后继续执行后续操作,而不是...

    接口回调demo完全解析

    通过这样的接口回调机制,我们可以构建出复杂的系统,其中组件之间可以通过回调进行通信,而无需直接依赖彼此。这种松耦合的设计使得代码更易于维护和扩展。在Android开发中,接口回调常用于Activity与Fragment之间...

    java反射机制,详细解释了,java反射机制原理、

    - **动态代理**:利用反射可以创建动态代理类,实现接口的方法调用,从而实现回调或者事件处理等功能。 - **元数据获取**:在运行时获取类的元数据信息,如注解(Annotation),用于实现动态配置或验证。 - **序列化...

    匿名内部类实现接口回调

    在Java编程中,接口回调是一种常见的设计模式,用于在对象之间传递异步事件或实现通信。这个"匿名内部类实现接口...在分析和实现"匿名内部类实现接口回调"的示例时,我们可以深入理解这些原理并将其应用于实际项目中。

    接口回调实现简易购物车功能

    在这个例子中,`ShoppingCart`类并不直接与界面交互,而是通过回调机制将添加商品的结果传递给`UIUpdater`,保持了良好的模块化和解耦。这种方式使得购物车功能可以更灵活地与其他系统集成,比如库存管理系统或支付...

    NPAPI开发示例源码支持js异步回调

    在描述中提到,该源码实现了JavaScript与NPAPI插件之间的异步回调机制。这意味着在JavaScript执行过程中,可以调用插件的某些功能,然后在插件完成任务后通过回调函数将结果返回给JavaScript。这种机制对于处理耗时...

Global site tag (gtag.js) - Google Analytics