Java回调函数

原创 2016年08月29日 12:51:53

回调函数在网上的讲解比较多,也是nodeJs里比较高级的特性,在Java里的回调函数就是指在服务端的函数可以调用客户端的代码,某百科的定义回调函数是“回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。”
关键就是将函数本身的引用传送到另一个函数,在Java中我们函数的调用是通过引用,所以我们会采用将当前对象本身的引用传递到另一个函数内部去执行。this关键字即是当前对象的引用。
我们可以写个demo,我们模拟server回调client。

class Client {
    Server server = new Server();
    // 2   调用服务
    public void callServer(String params) {
        System.out.println("client start to call server ...");
        sleep(1000);
        // 3 --- this传递当前对象引用
        server.state(this, "params come from client");
    }

    // 6    被回调的函数
    public void backFunction(String params) {
        System.out.println("client called by server ,params : " + params);
    }

    public static void sleep(int millions) {
        try {
            Thread.sleep(millions);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

class Server {

    // 1   模拟server启动
    static {
        System.out.println("server starting...");
        sleep(1000);
        System.out.println("server started...");
    }

    // 4    接收客户端引用
    public void state(Client client, String params) {
        System.out.println("server called by client, params : " + params);
        sleep(1000);
        System.out.println("server will call client...");
//      client.backFunction("server's params");   方式1
        callBack(client);
    }
    // 5   回调函数
    public void callBack(Client client) {
        System.out.println("server call client ...");
        sleep(1000);
        client.backFunction("server call client params");
    }

    public static void sleep(int millis) {
        try {
            Thread.sleep(millis);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
// 测试
        Client client = new Client();
        client.callServer("micro's client");

执行结果:

server starting...
server started...
client start to call server ...
server called by client, params : params come from client
server will call client...
server call client ...
client called by server ,params : server call client params

我们client首先用public void callServer(String params)调用Server,在内部调用server的时候将自身对象用this关键字传递到server,因此server内部也可以通过client.backFunction(“server call client params”);回调到client的函数,backFunction即是被回调的函数,callback称作毁掉函数。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java自定义回调函数

  • 2015年04月05日 23:43
  • 2.02MB
  • 下载

java回调函数

  • 2017年08月31日 17:08
  • 990B
  • 下载

Java 回调函数(传统方法和lambda方法)-一个例子秒懂

背景: 想写一个工具类 Tool.java ,其中方法 public void readOneLine() 负责一行一行地读文件,然后根据不同的业务,对每一行进行不同处理。最后输出到文件 out.t...

java和javascript回调函数的例子

  • 2014年04月08日 09:03
  • 7KB
  • 下载

Java中回调函数的使用

计算一个方法执行的时间: 通常我们会这样做: public class TestObject { /** * 一个用来被测试的方法,进行了一个比较耗时的循环 ...

java回调函数的初步理解

Java回调函数例子

java 回调函数 的介绍

慢慢深入接触java之后,就会遇到各种深入的编程知识,比如,设计模式,比如今天要说的回调函数。 一直以来都听别人讲,这里写个回调函数,就可以了,一直没明白,到底,啥是个回调函数? 学习别人的代码,...

JAVA回调函数深入理解

本文内容如下:0:什么是回调函数 1:回调函数的作用2:回调函数的实现3:api中的写法4:总结 具体内容0:回调函数是:让内部函数(一般是库函数)调用外部函数(自定义函数)的过程! (自己的理解)1...
  • pdw_jsp
  • pdw_jsp
  • 2011年07月14日 21:27
  • 2840

【转】java中的回调函数

所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。 一般说来,C不会自己调用B,C提供B的目的就是让S来调用它...
  • Simtice
  • Simtice
  • 2011年03月08日 15:43
  • 545

【Android开发学习36】Java回调函数之callback接口

按照我个人的理解,就是: 用java的回调机制来实现C语言中的函数指针的传递。   为了了解什么是回调函数,在网上查阅了如下资料,整理如下:   资料一: 首先说说什么叫回调函数? ...
  • ypist
  • ypist
  • 2013年04月12日 13:53
  • 11578
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java回调函数
举报原因:
原因补充:

(最多只允许输入30个字)