`
Jatula
  • 浏览: 278514 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JAVA回调机制

阅读更多

其技巧就是:定义一个简单接口,并在该接口中声明我们要调用的方法。

下面举一个例子:

假定我们希望在某个事件发生时得到通知。我们可以定义一个接口:

/*
 * 在某个事件发生时得到通知.
 */
public interface InterestingEvent {
   public void interestingEvent();
}

此接口中的方法,是个没有返回值的也没有任何参数,如果您愿意也可以有返回值,也可以带参数.这就要看具体需求而定.

这使得我们可以控制实现该接口的类的任何对象。因此,我们不必关心任何外部类型信息。与在将 C++ 代码用于Motif 时使用窗口小部件的数据域来容纳对象指针的难以控制的 C 函数相比,这种方法要好得多。

实现接口的代码如下:

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 {

 /**
  * @param args
  */
 public static void main(String[] args) {
  CallMe cm = new CallMe();
  CallYou cy = new CallYou();
  EventNotifier en = new EventNotifier();

  en.setInterestingEvent(cm);
  en.doWork();
  en.setInterestingEvent(cy);
  en.doWork();
 }

}

此测试在发生指定的调用CalMe事件时,就扫行CallMe下的命令,如发生CallYou事件时,就调用CallYou下的命令.此种方法可以结合Command模式.实现MS-Windows 和 X Window System 事件驱动编程模型.

5
0
分享到:
评论
7 楼 dominic6988 2011-09-26  
回调的实现一般通过匿名内部类来实现,交给调用者实现。比如hibernatetemplate里面的回调。
6 楼 ihaodongdong 2011-01-10  
这应该不是回调。
5 楼 Arron.li 2010-06-02  
shenlvcheng 写道
sunxg 写道
代码看的明白,但是思想不是很明白......

我也想说这个!到底回调的含义是什么呢?

java回调机制,对象能够携带一些信息,这些信息允许它在稍后的某个时刻调用初始的对象,如果回调是通过指针实现的,那么就只能寄希望程序员不会误用此指针,java更小心仔细,所以没有在语言中包括指针。

回调的价值在于它的灵活性-可以在运行时动态决定需要调用什么方法
4 楼 myumen 2010-05-22  
这不是回调,只是简单地给某个对象设置了一个属性,然后通过自身的方法调用属性对象的方法……
3 楼 shenlvcheng 2010-04-28  
sunxg 写道
代码看的明白,但是思想不是很明白......

我也想说这个!到底回调的含义是什么呢?
2 楼 rabbitbug 2010-04-23  
你确认这是回调?
1 楼 sunxg 2008-05-15  
代码看的明白,但是思想不是很明白......

相关推荐

    Java回调机制

    Java回调机制是软件设计模式中的一种,特别是在Java和Android开发中广泛应用。回调允许服务端对象在执行特定操作后,通知并调用客户端对象的方法。这种机制使得程序可以在异步环境中运行,即服务端处理完一个任务后...

    java回调机制1

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

    浅谈JAVA回调机制1

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

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

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

    java 回调函数 实现

    在回调机制中,接口扮演着关键角色,因为它定义了被调用的回调方法。例如,`OnButtonClickListener`接口可能包含了当按钮被点击时需要执行的方法。 2. **回调函数的实现**:在描述中提到,回调函数是通过自己模拟...

    java回调机制实例详解

    java回调机制实例详解 java回调机制是一种常见的设计模式,广泛应用于软件开发中。它允许一个对象在执行某个操作时,能够通知另一个对象,这样可以实现松耦合、灵活性强的编程模型。在java中,我们可以使用回调机制...

    Java回调机制解读

    Java回调机制是编程中一种非常重要的设计模式,它允许一个对象在另一个对象执行特定操作后得到通知或执行相应的处理。这种机制在Java中通常通过接口实现,使得被调用的对象能够在适当的时候调用回调方法来传递结果...

    给初学者的java回调demo

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

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

    Java回调机制可以分为两种:同步回调和异步回调。同步回调是在主程序中注册回调函数,等待耗时任务的完成后执行回调函数;异步回调是在耗时任务中注册回调函数,执行耗时任务后执行回调函数。 三、Java线程机制 ...

    通过简易例子讲解Java回调机制

    Java回调机制是一种设计模式,它允许一个对象在完成特定任务时通知另一个对象。这种机制使得代码更加灵活,因为被调用者可以在适当的时候主动调用调用者的某个方法,而不仅仅是被动地接收返回值。回调在多线程、事件...

    详解Java的回调机制

    Java的回调机制是一种设计模式,它允许一个对象在完成特定操作后通知另一个对象。这种机制在软件开发中常用于处理事件、异步编程以及对象间的通信。回调的主要优点是提高了代码的灵活性和可扩展性。 1. **回调的...

    Java基础核心理解+什么是回调即回调机制讲解

    ### Java基础核心理解+什么是回调及回调机制讲解 #### 一、回调机制的引入与应用场景 在软件开发中,特别是面向对象编程语言如Java中,模块间的交互是至关重要的。根据调用方式的不同,可以将模块间的交互分为三种...

    java回调函数

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

    java调用回调机制详解

    Java回调机制是编程中一种常见的设计模式,它允许一个对象在特定事件发生时通知另一个对象。在Java中,回调机制通常通过接口实现,一个对象(称为回调对象)实现了特定的接口,然后将这个对象作为参数传递给另一个...

    Java回调.rar

    理解并熟练运用回调机制,能够帮助开发者编写出更加灵活、可维护的代码。在实际开发中,合理地利用回调能够提高程序的性能和用户体验,同时也有助于遵循面向对象设计原则,实现模块间的良好协作。

Global site tag (gtag.js) - Google Analytics