一、定义   

    回调就是把函数指针做为参数传入,如函数A做为参数传入函数B,由B函数决定何时、何地调用函数A

function A()

function B(A)
    {
         call A()
     }

就是把A传给B,由B决定什么时候调用。

二、用途

一个通俗的例子如下:

你饿了,想吃饭,就一会去问你妈一声"开饭没有啊?"这就正常函数调用。但是今天你妈包饺子,,花的时间比较长,你跑啊跑啊,就烦了。于是你给你妈说,我先出去玩会,开饭的时候打我手机。等过了一阵,你妈给你打电话说"开饭啦,快回来吃饭吧!"。其中,你告诉你妈打手机找你,就是你把回调函数句柄保存到你妈的动作。你妈打电话叫你,就是个回调过程。

三、java中实现回调

java中如何实现回调?答案是接口方式:

1、定义一个接口phone,妈妈通过这个接口来通知孩子

package test1;

public interface phone {
public void eat();
}

2、定义一个孩子类,实现上面这个接口,供妈妈调用

package test1;

public class child implements phone
{
public void eat()
{
System.out.println("孩子吃的很happy~~~");
}
}

3、定义一个妈妈类

package test1;

public class mum {
phone phone1;
//将child作为参数传进来,这里传进来的实际是接口phone,由于child实现了phone,因此相当于将child作为参数传递了进来
public void setCallback(phone phone1)
{
this.phone1 =phone1;
} //通知child
public void callChild() throws Exception
{
System.out.println("开始包饺子");
Thread.sleep(3000);
System.out.println("饺子包好了"); System.out.println("打电话给孩子,过来吃饺子了");
phone1.eat();
} //主函数
public static void main(String[] args) throws Exception
{
child child1=new child();
mum mum1=new mum();
mum1.setCallback(child1);
mum1.callChild();
}
}

运行mum类,输出如下:

开始包饺子
饺子包好了
打电话给孩子,过来吃饺子了
孩子吃的很happy~~~

JAVA 回调的更多相关文章

  1. 【java回调】java两个类之间的回调函数传递

    背景交代:熟悉用js开发的cordovaAPP:对java一窍不通的我,老师让做一个监测用户拍照事件的功能,无奈没有找到现成的库,无奈自己动手开发java插件~~0基础java GreenHand,祝 ...

  2. Java回调实现

    一.回调的形式 1. C.C++和Pascal允许将函数指针作为参数传递给其它函数.JavaScript,Python,和PHP允许简单的将函数名作为参数传递. 2. .NET Framework的语 ...

  3. Java 回调函数

    下面使用java回调函数来实现一个测试函数运行时间的工具类: 如果我们要测试一个类的方法的执行时间,通常我们会这样做: public class TestObject { /** * 一个用来被测试的 ...

  4. Java回调理解 (step by step)

    在网上搜索了很多篇关于java回调函数的文章,自己也来试了一下写了这篇博客,可能有些地方理解不到位,烦请各位大大指正. 在计算机程序设计中.回调函数.或简称回调.是指通过函数參数传递到其他代码的,某一 ...

  5. java回调机制及其实现(转)

    1. 什么是回调函数 回调函数,顾名思义,用于回调的函数.回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数.回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机.回调 ...

  6. java回调函数,看完就懂

    java回调函数在网上了看了些例子,比较绕,不够清晰,自己写的一个例子比较通俗,java回调其实很简单. 举个例子我是类B,我有个方法叫b(),现在我要调用类A中的方法a(),写个代码就是: publ ...

  7. Java回调机制总结

    调用和回调机制 在一个应用系统中, 无论使用何种语言开发, 必然存在模块之间的调用, 调用的方式分为几种: 1.同步调用 同步调用是最基本并且最简单的一种调用方式, 类A的方法a()调用类B的方法b( ...

  8. Java回调函数的理解与实现

    回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用.这一设计允许了底层代码调用在高层定义的子程序. 在Java里面,我们使用接口来实现回调.举个例子 所谓的回调,就是程序员 ...

  9. 转:一个经典例子让你彻彻底底理解java回调机制

    一个经典例子让你彻彻底底理解java回调机制 转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17483273 ...

  10. Java回调实现异步 (转)

    出处: Java回调实现异步 在正常的业务中使用同步线程,如果服务器每处理一个请求,就创建一个线程的话,会对服务器的资源造成浪费.因为这些线程可能会浪费时间在等待网络传输,等待数据库连接等其他事情上, ...

随机推荐

  1. Android拍照、录像、录音代码范例

    <p>import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import andro ...

  2. Intellij Idea 12 生成serialVersionUID的方法

    默认情况下Intellij IDEA是关闭了继承了java.io.Serializable的类生成serialVersionUID的警告.如果需要ide提示生成serialVersionUID,那么需 ...

  3. ASP.NET 将数据生成PDF (二)

    可以下载itextsharp(https://sourceforge.net/projects/itextsharp)下载,然后在工程中引用该控件,举例子如下 1  datatable 的内容转换为P ...

  4. Mysql 模糊匹配和转义字符

    首先创建一个测试表: insert into test(tt) values('\\\\172.18.28.153'); 现在我想使用模糊匹配,查出以 “\\172” 开头的字符串. 需要使用like ...

  5. for循环内 执行$ajax(){}

    真是郁闷,在for 循环里添加了ajax异步传输之后,for循环是单线程处理,就是里面执行的是ajax,也不异步处理数据.而是执行完for循环的次数后,一起把ajax的数据处理掉. 解决办法.分开吧! ...

  6. 剑指offer系列30-----删除链表中重复的节点

    [题目]在一个排序的链表中,存在重复的结点, * 请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. * 例如,链表1->2->3->3->4->4->5 ...

  7. 【转】Redis主从复制简介

    一.Redis的Replication:    这里首先需要说明的是,在Redis中配置Master-Slave模式真是太简单了.相信在阅读完这篇Blog之后你也可以轻松做到.这里我们还是先列出一些理 ...

  8. bzoj2012: [Ceoi2010]Pin

    Description 给出N(2<=N<=50000)个长度为4的字符串,问有且仅有D(1<=D<=4)处不相同的字符串有几对. Input 第1行: N,D 以下N行每行一 ...

  9. 详细说明svn分支与合并---命令行

    一,svn分支与合并有什么用? 作程序的,对svn在熟悉不过了,但对svn分支熟悉的,我想并不多.因为一般情况下,是用不着svn分支的,其实也没有那个必要.下面我例举几个需要用到svn分支的情况: 1 ...

  10. 正则表达式(BREs,EREs,PREs)差异比较

    我想各位也和我一样,再linux下使用grep,egrep, awk , sed, vi的搜索时,会经常搞不太清楚,哪此特殊字符得使用转义字符'\' ..   哪些不需要, grep与egrep的差异 ...