`
xiaoboss
  • 浏览: 648125 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JAVA 回调

 
阅读更多

熟悉MS-Windows和X Windows事件驱动设计模式的开发人员,通常是把一个方法的指针传递给事件源,当某一事件发生时来调用这个方法(也称为“回调”)。Java的面向对象的模型目前不支持方法指针,似乎不能使用这种方便的机制。

Java支持interface,通过interface可以实现相同的回调。其诀窍就在于定义一个简单的interface,申明一个被希望回调的方法。


例如,假定当某一事件发生时会得到通知,我们可以定义一个interface:
public interface InterestingEvent {
    // 这只是一个普通的方法,可以接收参数、也可以返回值
    public void interestingEvent();
}

这样我们就有了任何一个实现了这个接口类对象的手柄grip。

当一事件发生时,需要通知实现InterestingEvent 接口的对象,并调用interestingEvent() 方法。
class EventNotifier {
    private InterestingEvent ie;
    private boolean somethingHappened;

    public EventNotifier(InterestingEvent event) {
        ie = event;
        somethingHappened = false;
    }

    public void doWork() {
        if (somethingHappened) {
            // 事件发生时,通过调用接口的这个方法来通知
            ie.interestingEvent();
        }       
    }
}

在这个例子中,用somethingHappened 来标志事件是否发生。

希望接收事件通知的类必须要实现InterestingEvent 接口,而且要把自己的引用传递给事件的通知者。
public class CallMe implements InterestingEvent {
    private EventNotifier en;

    public CallMe() {
        // 新建一个事件通知者对象,并把自己传递给它
        en = new EventNotifier(this);
    }

    // 实现事件发生时,实际处理事件的方法
    public void interestingEvent() {
        // 这个事件发生了,进行处理
    }
}

以上是通过一个非常简单的例子来说明Java中的回调的实现。

当然,也可以在事件管理或事件通知者类中,通过注册的方式来注册多个对此事件感兴趣的对象。

1. 定义一个接口InterestingEvent ,回调方法nterestingEvent(String event) 简单接收一个String 参数。

interface InterestingEvent {
    public void interestingEvent(String event);
}

 

2. 实现InterestingEvent接口,事件处理类

class CallMe implements InterestingEvent {
    private String name;
    public CallMe(String name){
        this.name = name;
    }   
    public void interestingEvent(String event) {
        System.out.println(name + ":[" +event  + "] happened");
    }
}

 

3. 事件管理者,或事件通知者

class EventNotifier {
    private List<CallMe> callMes = new ArrayList<CallMe>();
   
    public void regist(CallMe callMe){
        callMes.add(callMe);
    }
   
    public void doWork(){
        for(CallMe callMe: callMes) {
            callMe.interestingEvent("sample event");
        }
    }   
}

 

4. 测试

public class CallMeTest {
    public static void main(String[] args) {
        EventNotifier ren = new EventNotifier();
        CallMe a = new CallMe("CallMe A");
        CallMe b = new CallMe("CallMe B");

        // regiest
        ren.regist(a);
        ren.regist(b);
       
        // test
        ren.doWork();       
    }
}

 

 

 

分享到:
评论

相关推荐

    给初学者的java回调demo

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

    java 回调函数 实现

    在Java编程中,回调函数是一种设计模式,它允许一个对象在另一个对象执行特定操作后接收通知或进行处理。这种机制通常用于事件驱动编程或者异步编程中,使得代码能够响应某些特定事件的发生。在给定的场景中,我们...

    java回调函数

    Java回调函数是编程中一种非常重要的设计模式,它允许一个对象在另一个对象完成特定操作后进行通知或执行相应的处理。这种机制使得代码更加灵活,解耦了调用者和被调用者的依赖关系,通常用于事件处理、异步编程、...

    Java回调.rar

    Java回调是一种设计模式,它允许一个对象在另一个对象完成特定操作后进行通知或执行相应的代码。这个概念在软件工程中非常常见,特别是在事件驱动编程和异步编程中。回调是通过将一个方法的引用(或者在Java中,一个...

    Android java 回调例子

    相信很多初学android java的童鞋们都不太懂回调的意思,我当时也是这样的什么这个跳到那个然后又从那个调用这个的方法。。。弄得晕头转向的,今天我突然顿悟,于是写了一个回调例子与大家分享,由于手头分不多了,...

    Java回调机制

    Java回调机制是编程中一种非常重要的设计模式,它在异步编程、事件驱动编程和通信中扮演着核心角色。在Java中,回调机制允许一个对象(通常被称为回调对象)向另一个对象注册自身的方法,以便在特定事件发生时,被...

    Java回调函数的理解

    ### Java回调函数的理解 #### 一、回调函数的概念与应用场景 在计算机编程中,回调是一种常用的编程模式,尤其是在异步编程场景中。简单来说,回调指的是一个函数或方法被另一个函数调用,作为参数传递进去。这种...

    Java回调函数详解共6页.pdf.zip

    Java回调函数是编程中一种常见的设计模式,它允许一个对象在其他对象完成特定操作后进行通知或介入。这种模式在Java中广泛应用于事件处理、异步编程和接口交互。本资料"Java回调函数详解共6页.pdf.zip"将深入探讨这...

    如何用Java回调和线程实现异步调用.pdf

    "如何用Java回调和线程实现异步调用" 在软件开发中,异步调用是一种非阻塞式调用方式,用于在处理比较耗时的任务时保证程序的连续性和实时性。实现异步调用的关键在于解决三个技术难题:程序阻塞问题、异步消息的...

    java回调机制1

    Java回调机制是一种编程模式,它允许一个对象在特定事件发生时调用另一个对象的方法。在上述例子中,回调机制的概念逐渐展开,通过一个简单的幼儿园加法故事进行解释。 首先,我们有`Student`类,它有一个`fill...

    C回调java几种方法

    为了实现更灵活的回调,可以在Java中定义一个接口,让C代码通过实现该接口的本地方法来触发Java回调。在C代码中,可以创建一个Java对象并设置其为接口的实现,然后通过Java对象调用接口方法。 5. **线程本地存储...

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

    下面我们将深入探讨Java回调函数的概念、实现方式以及使用技巧。 首先,理解回调函数的基本原理非常重要。回调函数本质上是一种将控制权转移的技术,使得调用者可以在适当的时间调用被调用者提供的函数。在Java中,...

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

    Java回调函数是编程中一种常见的设计模式,它允许一个对象在其他对象执行特定操作后接收通知或进行相应的处理。在Java中,回调机制通常通过接口或者实现类来实现,这使得代码具有更好的灵活性和可扩展性。本篇将深入...

    浅谈JAVA回调机制1

    Java回调机制是一种编程概念,其核心在于一个对象(A)调用另一个对象(B)的方法,而这个方法内部又反过来调用A对象的另一个方法,形成一种链式反应。回调在多线程、异步处理和事件驱动编程中非常常见,因为它允许...

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

    本实例将聚焦于Java版本的实现,通过深入理解回调模式,我们可以更好地构建稳定、高效的微信企业号应用。 首先,我们要明白微信企业号回调的基本原理。当微信企业号接收到特定事件(如用户关注、取消关注、消息发送...

    java实现企业微信回调配置案例

    3. **Java回调处理类** 创建一个Java类,用于处理来自企业微信的回调请求。这个类通常需要实现HTTP服务端点,例如使用Spring Boot的`@RestController`注解。在接收到POST请求后,解析请求体,通常是JSON格式的数据...

    两个经典例子让你彻底理解java回调机制(csdn)————程序.pdf

    Java回调机制是一种编程模式,它允许一个对象在另一个对象完成特定操作后被通知或调用。这种机制在软件设计中非常常见,特别是在处理异步操作和事件驱动编程中。通过回调,一个对象(调用者)可以注册一个回调函数或...

    Java 回调函数详解及使用

    Java 回调函数详解 前言: C语言中回调函数解释: 回调函数(Callback Function)是怎样一种函数呢? 函数是用来被调用的,我们调用函数的方法有两种:  直接调用:在函数A的函数体里通过书写函数B的函数名来调用...

    Java面试如何用Java实现一个回调函数

    Java面试如何用Java实现一个回调函数

Global site tag (gtag.js) - Google Analytics