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. Ubuntu 字体设置:使用Windows 字体

    基础知识 Sans-serif=无衬线体=黑体:并不是具体一款字体,而是一类字体,选择它其实等于选择这类字体中优先级最高的那款字体. Serif=衬线体=白体:同上 Monospace=等宽字体,意思 ...

  2. 几个有用的javascript(日期比较,数字验证,数字和汉字长度计算)

    1:日期大Js代码 //人员失效职位日期是否小于组织失效日期 function perDateInvalidate(){ var flag = true; //组织失效日期 var orgDate = ...

  3. C#实现两个数据库之间的数据上报

    用VS2008实现本地数据库上传数据到远程数据.数据能够是一个表,或一个表的部分数据.或查询数据.或数据编辑后上传. 其他VS版本号.复制当中代码就能够.未使用其他不论什么插件.有具体凝视. 单独页面 ...

  4. vb.net中将DataGridView与数据源绑定

    在< .net中将DataGridView内的数据导出为Excel表格>中说了如何导出数据到Excel,今天这篇文章将讲述如何绑定数据源,在控件中显示我们需要的信息. 在敲机房收费系统的时 ...

  5. scala lambda 小括号与大括号

    看akka源码的时候看到这样的一个用法: 作为接触scala两天半的我有些看不明白了.好一番搜索看到这样的答案: <scala雾中风景(2): 小括号与花括号> 下面的问题,表面上看是小括 ...

  6. tomcat控制台启动成功但是却访问不了主页

    从杭州来京出差,也许是因为春节将至,也或许是由于携带的一点点小情绪致使自己丧失了理智,So 那就开始吧.............北京有些地方也不错的. 需要帮同事在客户这边搭建一个Java proje ...

  7. zend studio 13.0.0 安装破解汉化

    zend studio 13安装破解汉化步骤 官网原版下载 http://downloads.zend.com/studio-eclipse/13.0.0/ZendStudio-13.0.0-win3 ...

  8. chrome 设置启动时打开特定一组网页

      chrome 设置启动时打开特定一组网页 CreateTime--2018年4月25日08:57:00 Author:Marydon 1.使用场景 经常有一些必用的网站,每天打开chrome都要依 ...

  9. Linux命令-文件处理命令:touch

    touch chengshi.list 在当前目录中创建chengshi.list文件 touch /root/chengshi.list 在root目录下面创建chengshi.list文件 tou ...

  10. vector 类简介和例程

    一.标准库的vector类型 vector是同一种类型的对象的集合 vector的数据结构很像数组,能非常高效和方便地访问单个元素 vector是一个类模板(class template) vecto ...