Java回调函数的理解

开发 后端
刚开始学习android,经常看到回调函数这个字眼,由于Java学的不是太好,所以找了些资料,自己有些理解了,就拿出来和大家分享下。

所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R称为注册函数。Web Service以及Java的RMI都用到回调机制,可以访问远程服务器程序。(这段是网上抄的,摘自http://hi.baidu.com/f117_n/blog/item/2f52e612347cd3c8c3fd78ad.html

重新举个例子来理解回调:

我遇到了一个问题,便用家里的固话打给我的同事,他说不太清楚,稍后给我回复。我说我一会要出去,你想到了之后打我手机吧。没过多久,我同事就打手机过来告诉了我答案。

下面是代码:

1、先定义一个接口,规定回答问题的条件是打我手机

  1. public interface CallBack {      
  2.     //通过手机回答  
  3.     void CallIphone();  

2、调用者(我):

  1. public class Me {  
  2.     public void askQuestion(){  
  3.         System.out.println("拨打固话问1+1=?");  
  4.     }  

3、被调用者(同事):

  1. public class You {  
  2.  
  3.     public void answer(CallBack callBack){  
  4.         //进行回调  
  5.         callBack.CallIphone();  
  6.     }  
  7.       
  8.     public static void main(String[] args) throws InterruptedException {  
  9.         new Me().askQuestion();  
  10.         Thread.sleep(3000);  
  11.         new You().answer(new CallBack() {  
  12.             //实现接口,即回答问题的方式  
  13.             public void CallIphone() {  
  14.                 System.out.println("拨打手机回答等于2");                  
  15.             }  
  16.         });  
  17.     }  

4、显示结果

  拨打固话问1+1=?
  拨打手机回答等于2

代码很简单,理解也很肤浅,希望对大家有用。

原文链接:http://www.cnblogs.com/doubao/archive/2012/01/31/2333807.html

【编辑推荐】

  1. 简述Java图形用户界面设计(Swing)
  2. Effective Java 创建和销毁对象
  3. Java编码及网络传输中的编码问题
  4. 探讨:Java中删除数组中重复元素
  5. Java的动态绑定机制
责任编辑:林师授 来源: derek_citylife的博客
相关推荐

2019-11-05 10:03:08

callback回调函数javascript

2020-11-03 10:32:48

回调函数模块

2011-06-15 11:05:14

C语言回调函数

2021-04-07 13:28:21

函数程序员异步

2011-05-20 17:59:06

回调函数

2011-07-25 14:32:40

Cocoa 框架 函数

2022-04-12 08:30:52

回调函数代码调试

2009-08-12 10:11:18

C# 回调函数

2011-05-20 17:19:25

回调函数

2022-04-18 08:34:29

回调函数命令解析

2021-01-14 07:52:24

JavaScript回调函数

2009-08-19 17:10:09

C#回调函数

2009-11-04 11:32:20

VB.NET回调函数

2010-02-04 16:07:39

C++回调函数

2021-02-07 21:59:39

Java回调机制

2023-04-18 08:10:10

2022-03-08 11:17:54

函数指针回调函数C语言

2009-07-31 16:25:29

C#回调函数API应用

2018-11-29 08:00:20

JavaScript异步Promise

2010-01-06 16:40:11

.Net Framew
点赞
收藏

51CTO技术栈公众号