在网上搜索了很多篇关于java回调函数的文章,自己也来试了一下写了这篇博客,可能有些地方理解不到位,烦请各位大大指正。

计算机程序设计中。回调函数。或简称回调。是指通过函数參数传递到其他代码的,某一块

title=%E5%8F%AF%E6%89%A7%E8%A1%8C%E4%BB%A3%E7%A0%81&action=edit&redlink=1" style="color:rgb(202,0,0); text-decoration:none">可运行代码引用

这一设计同意了底层代码调用在高层定义的子程序

在Java里面,我们使用接口来实现回调。

模拟一个场景:一个Girl给她男朋友Man打电话,然后Man给她回复:

首先定义一个接口:

package mine.callback2;

public interface CallInterface {
void execute();
}

Girl:

package mine.callback2;

public class Girl {
public CallInterface ci; //保存一个接口引用
public void setCallFun(CallInterface ci){
this.ci=ci;
}
public void call(){
ci.execute(); //回调实现CallInterface接口Man中的方法
}
}

Man:

package mine.callback2;

public class Man implements CallInterface {

	@Override
public void execute() {
System.out.println("好的,女王大人");
} public static void main(String[] args) {
Girl girl = new Girl();
girl.setCallFun(new Man());
girl.call();
}
}

接口不变,实现实现以上同样的功能:

Girl:

package mine.callback1;

public class Girl {
public CallInterface ci;
public void CallFun(CallInterface ci){
System.out.println("陪我去逛街,好么?");
ci.execute(); //进行回调操作
}
}

Man:

package mine.callback1;

public class Man {

	public static void answerA() {
System.out.println("好的,女王大人!");
}
public static void answerB(){
System.out.println("对不起,我这儿还有任务没完毕,以后有时间陪你噢.");
}
public static void main(String[] args) {
Girl girl = new Girl();
girl.CallFun(new CallInterface() { @Override
public void execute() {
//这里能够调用很多其它的回答
answerB();
}
});
}
}

假设思路不够清晰能够看以下这篇文章:http://kidult.iteye.com/blog/148982

Java回调理解 (step by step)的更多相关文章

  1. e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (四) Q 反回调

    上一篇文章“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) SqlServ ...

  2. 【转载】MDX Step by Step 读书笔记(三) - Understanding Tuples (理解元组)

    1. 在 Analysis Service 分析服务中,Cube (多维数据集) 是以一个多维数据空间来呈现的.在Cube 中,每一个纬度的属性层次结构都形成了一个轴.沿着这个轴,在属性层次结构上的每 ...

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

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

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

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

  5. [java] 深入理解内部类: inner-classes

    [java] 深入理解内部类: inner-classes // */ // ]]>   [java] 深入理解内部类: inner-classes Table of Contents 1 简介 ...

  6. 持续交付工具ThoughtWorks Go部署step by step

    持续交付工具ThoughtWorks Go部署step by step http://blogs.360.cn/360cloud/2014/05/13/%E6%8C%81%E7%BB%AD%E4%BA ...

  7. enode框架step by step之消息队列的设计思路

    enode框架step by step之消息队列的设计思路 enode框架系列step by step文章系列索引: enode框架step by step之开篇 enode框架step by ste ...

  8. enode框架step by step之saga的思想与实现

    enode框架step by step之saga的思想与实现 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件驱动架构(EDA)的应用开发框架enode enode ...

  9. enode框架step by step之框架要实现的目标的分析思路剖析1

    enode框架step by step之框架要实现的目标的分析思路剖析1 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件驱动架构(EDA)的应用开发框架enode ...

随机推荐

  1. android 4.0后不允许屏蔽掉home键

    屏蔽home键的方法 // 屏蔽掉Home键 public void onAttachedToWindow() { this.getWindow().setType(WindowManager.Lay ...

  2. 基于visual Studio2013解决C语言竞赛题之0801信息输出

     题目

  3. C++ vs.net设置UTF8字符

    1.将main.cpp改成utf-8编码,方法是点击main.cpp,然后选择菜单文件->高级保存选项.[所有源码都要转换成uft-8] 2.在你的main函数里,设置如下代码,完美解决qt5的 ...

  4. grunt getHTML

    var Base = require( "../common/base" ) , HandlerBase = require( "../common/handlerBas ...

  5. Bertelsmann Asia Investments, 简称BAI

    聚焦龙宇:贝塔斯曼的中国风险投资之路 _财经_腾讯网 贝塔斯曼亚洲投资基金(Bertelsmann Asia Investments, 简称BAI )

  6. PHP脚本监控程序

    #!/bin/sh # Find ip IP=`/sbin/ifconfig eth1 | grep 'inet addr' | awk '{ print substr($2, index($2, & ...

  7. Android 之SparseArray<E>详解

    SparseArray是android里为<Interger,Object>这样的Hashmap而专门写的class,目的是提高效率,其核心是折半查找函数(binarySearch) pr ...

  8. Apple严控Java太不人性化

    转自:http://www.cdtarena.com/javapx/201307/9115.html Apple为了在系统安全方面得到更好的声誉,对更容易造成系统漏洞的Java进行着严格的控制,并在自 ...

  9. .net版Git Server --- bonobo

    官网地址: https://bonobogitserver.com/ Demo: http://demo.bonobogitserver.com/Home/LogOn  登入admin:admin C ...

  10. spark集群安装配置

    spark集群安装配置 一. Spark简介 Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发.Spark基于map reduce 算法模式实现的分布式计算,拥有Hadoo ...