超威半导体

失望-痛苦-分裂-自省-領悟-覺醒-重生

Java回调函数

回调函数在网上的讲解比较多,也是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称作毁掉函数。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/micro_hz/article/details/52352095
文章标签: java 函数 指针
个人分类: 编程语言
上一篇八月项目与读书笔记
下一篇扑克牌顺子
想对作者说点什么? 我来说一句

javajavascript回调函数的例子

2014年04月08日 7KB 下载

java回调函数

2017年08月31日 990B 下载

没有更多推荐了,返回首页

关闭
关闭