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. C# 16位GUID

    摘自: http://www.cnblogs.com/lcwzj/archive/2009/04/16/1436992.html 当我们想要获得一个唯一的key的时候,通常会想到GUID.这个key非 ...

  2. Configure Trusted Roots and Disallowed Certificates

    Configure Trusted Roots and Disallowed Certificates Updated: May 5, 2014 Applies To: Windows 8.1, Wi ...

  3. [Algorithm -- Dynamic Programming] Recursive Staircase Problem

    For example there is a staricase N = 3 | ---|   |---|    | |---|            | ---|                  ...

  4. 【php】Apache无法自己主动跳转却显示文件夹与php无法连接mysql数据库的解决方式

    一.Apache无法自己主动跳转却显示文件夹 Apache无法自己主动跳转却显示文件夹这是由于Apacheserver下conf/httpd.conf没有配置好,其默认是不跳转,直接显示文件夹 首先, ...

  5. Caused by: java.lang.NumberFormatException: For input string: ""

    1.错误描写叙述 java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatEx ...

  6. 重置 radio 和 checkbox 的样式

    代码: <!doctype html> <html> <head> <meta charset="utf-8"> <title ...

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

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

  8. windows+Linux【Composer安装指定版本laravel】

    在windows下安装的方法:(php.ini中openssl.dll扩展必须打开,且版本>=5.4) 方法一:使用安装程序 这是将 Composer 安装在你机器上的最简单的方法. 下载并且运 ...

  9. 使用meta属性禁用手机浏览器的缩放功能

    在移动设备浏览器上,通过为视口(viewport)设置 meta 属性为 user-scalable=no 可以禁用其缩放(zooming)功能.这样禁用缩放功能后,用户只能滚动屏幕,就能让你的网站看 ...

  10. 为MFC中的ListBox添加水平滚动条

    我们知道,MFC中的水平滚动条并不像垂直滚动条那样的智能.当文字超出ListBox的宽度时,水平滚动条并不会自己出现,我们需要手动的调用CListBox中的函数SetHorizontalExtent设 ...