Java中的回调(callback)是很重要的一个概念,spring整合hibernate大量使用了这种技术。
究竟怎样才是回调呢?
这是网上最多见到的说明:  
  1.class   A,class   B  
  2.class   A实现接口callback

  3.class   B拥有一个参数为callback接口类型的函数
  4.class   A运行时调用class   B中的函数,以自身传入参数  
  5.class   B已取得A,就可以随时回调A所实现的callback接口中的方法  
 
下面我举一个例子:
中国电信(ChinaTelecom)是移动运营商之一,想必近两年满天飞的“天翼3G”大家都知道吧。空中网(KongNet)是那个总是喊“用手机看NBA”的服务提供商(ServiceProvider,简称“SP”)。
移动运营商和SP合作才能为我们广大移动用户提供各种服务。比如音乐,彩铃,手机看NBA等等。
这里有一个接口ServiceProvider,也就是Callback接口;
 
 
public interface ServiceProvider {
 
    public void customHint();
}
 
一个ChinaTelecom类,即class B;
 
 
public class ChinaTelecom {
    private ServiceProvider sp;//callback接口作为属性
 
    public void setSp(ServiceProvider sp) {
        this.sp = sp;
    }
 
 
    public void init(){
        System.out.println("Welcome, This is ChinaTelecom! ");
        sp.customHint();//sp自定义的操作
    }
}
 
一个KongNet类,即 class   A
 
 
public class KongNet implements ServiceProvider{
 
    public void customHint() {
        System.out.println("优惠活动开始啦,即日起登陆空中网就有好礼送! 详情见网站公告。");
    }
 
    public void init(){
        ChinaTelecom ct=new ChinaTelecom();
        ct.setSp(new KongNet());//告诉ChinaTelecom这是哪家sp
//KongNet(也就是当前类)实现了ServiceProvider,因此就能把当前类作为适合
       //ChinaTelecom.setSp()的参数,可以修改为ct.setSP(this);
        ct.init();
    }
 
    public static void main(String[] args){
        KongNet sp = new KongNet();
        sp.init();
    }
}
 
在你的Eclipse里面试一下吧,将可以看到
Welcome, This is ChinaTelecom!
优惠活动开始啦,即日起登陆空中网就有好礼送! 详情见网站公告。
这样的输出。

Java callback的更多相关文章

  1. Java callback回调

    package com.callback; public interface CSCallBack { public void process(String status); } package co ...

  2. getSupportFragmentManager要用在FragmentActivity及其子类中

    getSupportFragmentManager要用在FragmentActivity及其子类中!! 关于安卓抽屉导航!! * 自定义侧边栏

  3. jni使用

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 简介 详解 JNI 元素 JNI函数实战 AndroidmkApplicationmk Androidmk Applicat ...

  4. Android Fragment基础及使用

    同一个app内的界面切换 用Fragment比较合适,因为Activity比较重量级 Fragment 轻量级,切换灵活 --------------------------------------- ...

  5. JNI 解析

    JNI是什么? JNI(Java Native Interface)意为JAVA本地调用,它允许Java代码和其他语言写的代码进行交互,简单的说,一种在Java虚拟机控制下执行代码的标准机制. NDK ...

  6. JNI 实战全面解析

    项目决定移植一款C++开源项目到Android平台,开始对JNI深入研究. JNI是什么? JNI(JavaNative Interface)意为Java本地调用,它允许Java代码和其他语言写的代码 ...

  7. EasyCode实现数据库到Swagger全自动化

    简介 EasyCode是基于IntelliJ IDEA开发的代码生成插件,通过自定义生成模板可以完成定制化的 Mapper Service Controller 生成,结合数据库 Comment还可以 ...

  8. EasyCode插件使用及模板参考

    EasyCode插件使用及模板参考 1.介绍安装 Easycode是idea的一个插件,可以直接对数据的表生成entity.controller.service.dao.mapper无需任何编码,简单 ...

  9. 源码篇:Handler那些事

    前言 Handler属于八股文中非常经典的一个考题了,导致这个知识点很多时候,考官都懒得问了:这玩意很久之前就看过,但是过了一段时间,就很容易忘记,但是处理内存泄漏,aidlHandler之类的考点答 ...

随机推荐

  1. TestNG测试带参构造函数的类

    今天被同事问到一个问题,问题描述如下: 一个测试类,只有一个带参构造函数.在带参构造函数上加@Test,同时加@Parameters注解从testng.xml中传递参数.为保证测试函数在带参构造函数之 ...

  2. SVG 可伸缩矢量图形 简介 Path路径

    w3school:http://www.w3school.com.cn/svg/svg_intro.asp  SVG 意为可缩放矢量图形(Scalable Vector Graphics). SVG ...

  3. java设计模式2--抽象工厂模式(Abstract Factory)

    本文地址:http://www.cnblogs.com/archimedes/p/java-abstract-factory-pattern.html,转载请注明源地址. 抽象工厂模式(别名:配套) ...

  4. WordPress 如何修改编辑器TinyMCE里的内容

    //获取编辑器对象,wp中的编辑器ID是"content" var editor = tinymce.get('content'); //获取编辑器内容 var content = ...

  5. 函数y=sin(1/x)曲线

    该曲线在x趋近于零时振荡很剧烈,在远离零点时振荡越来越平缓. 图线: 代码: <!DOCTYPE html> <html lang="utf-8"> < ...

  6. centos版本7以上网卡名修改

    1.初始状态网卡 2.首先,先编辑网卡的配置文件 vi /etc/sysconfig/network-scripts/ifcfg-eno16777736 将里面的NAME项修改为eth0 3.然后,禁 ...

  7. CentOS6.5搭建MySQL5.1主从复制

    环境: mysql> select version(); +------------+ | version() | +------------+ | 5.1.73-log | +-------- ...

  8. 〖Android〗K860/K860i CM10.2 Logcat

    --------- beginning of /dev/log/main I/installd( 1377): installd firing up I/DEBUG ( 1370): debugger ...

  9. 〖Android〗(how-to) fix k860/k860i buletooth.

    bluedroid.so for k860/k860i 1./media/Enjoy/AndroidCode/cm10.1/device/lenovo/stuttgart/bluetooth/blue ...

  10. 恢复阿里云RDS云数据库MySQL的备份文件到自建数据库

    云数据库MySQL版使用开源软件Percona Xtrabackup对数据库进行备份,所以您可以使用该软件将云数据库MySQL的备份文件恢复到自建数据库中,本文将介绍详细的操作步骤. 关于云数据库My ...