Java回调函数
来源:互联网 发布:js event button 编辑:程序博客网 时间:2024/06/06 08:56
回调函数在网上的讲解比较多,也是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 clientserver 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称作毁掉函数。
0 0
- JAVA回调函数
- java回调函数
- Java回调函数
- Java 回调函数
- java回调函数
- Java 回调函数
- Java 回调函数
- Java回调函数
- Java回调函数
- java回调函数
- Java 回调函数
- Java 回调函数
- java回调函数
- Java 回调函数
- java 回调函数
- java回调函数
- java回调函数
- Java 回调函数
- 评分卡模型剖析之一(woe、I…
- 数据挖掘技术(四)——聚类
- scikitlearn/theano多分类问题详解
- Weka 分类 注意点
- 深度学习keras程序失败的解决办法
- Java回调函数
- 用lxrun更改Linux子系统中的默认登录帐户
- csdn如何转载别人的文章
- 条款二十四:了解virtual functions、multiple inheritance、virtual base class、runtime type identification的成本
- 搭建web项目结合spring+cxf的webservice服务
- 初学主席树
- Spark word count 实例
- CodeForces 314B. Sereja and Periods 思维+简单dp
- 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置