回调,其实就是有个回应的那种感觉。

那么,接下来,我们就用消息推送的场景,简简单单地讲解下回调函数的使用。

直接看代码,

先创建一个回调接口,

MessageCallBack

/*** @Author : JCccc* @CreateTime : 2019-2-12* @Description :回调函数需要执行的内容* @Point: Keep a good mood**/public interface MessageCallBack {//成功public void onSccuess(String message, String account);//失败public void onFailure(String message, String account);//重连等等
}

接下来,是模拟消息发送的客户端,

MessageClient

/*** @Author : JCccc* @CreateTime : 2019-2-12* @Description :* @Point: Keep a good mood**/
public class MessageClient implements MessageCallBack {private String message;private String account;//重写回调接口的方法@Overridepublic void onSccuess(String message, String account) {System.out.println("进入回调函数--"+"消息推送成功,"+"客户是:"+account+" 推送的消息是:"+message);}@Overridepublic void onFailure(String message, String account) {System.out.println("进入回调函数--"+"消息推送失败,"+"客户是:"+account+" 推送的消息是:"+message);}public void  sendMessage(){System.out.println("开始调用服务端进行消息的推送");new MessageServer().send(message,account,this);//   new MessageServer().send(message,"Mike",new MessageClient(message,account));}public MessageClient(String message, String account) {this.message = message;this.account = account;}}

接下来,是模拟消息服务器:

MessageServer:

/*** @Author : JCccc* @CreateTime : 2019-2-12* @Description :* @Point: Keep a good mood**/
public class MessageServer {public void send(String message, String account, MessageClient messageClient){try {System.out.println(message+" "+account+"消息推送完毕");messageClient.onSccuess(message,account);} catch (Exception e) {e.printStackTrace();messageClient.onFailure(message,account);}}
}

最后,写个简单的对外接口,提供消息推送,

MessageController

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** @Author : JCccc* @CreateTime : 2019-2-12* @Description :* @Point: Keep a good mood**/@RestController
public class MessageController {@GetMapping("/sendMessage/test")public void sendMesssage(@RequestParam String account){String message="这是一条测试消息";MessageClient messageClient=new MessageClient(message,account);messageClient.sendMessage();}}

现在,代码码完了,我们打开postman来看看整个跑起来是怎么回事,

运行结果:

可以看到控制台得输出是

整个流程下来,应用调用消息客户端,想要推送一条消息;

消息客户端拿到客户信息和需要推送的消息后,调用消息服务端推送消息的方法进行推送操作;

消息服务端进行完推送操作后,调用客户端的回调函数,告知推送成功或是失败。

如果要验证下消息推送失败的回调,也简单,把代码

// int a=2/0;

加到消息服务端推送处,模拟推送过程出现异常即可。

好了,简单的回调函数的应用场景介绍就这样吧, 可以熟悉后自己扩展。

JAVA回调函数简单讲解 CallBack相关推荐

  1. Java回调机制简单讲解

    今天刚好学了一下设计模式中的观察者模式,其中涉及到了回调的相关内容,以前也经常用到回调函数,今天稍微总结一下相关内容. 回调 所谓回调:简单来说就是,A对象调用了自己的方法a,方法a接收的参数是B接口 ...

  2. Java 回调函数的理解

    以下是我对java回调函数的理解,希望对各位有帮助. 简而言之,假设有两个类A与B,还有一个回调接口C(有一个c方法).其中A类持有一个B类对象作为属性和拥有一个a方法,并实现了接口C,所以A类中就有 ...

  3. [实战]java回调函数

    下面使用java回调函数来实现一个测试函数运行时间的工具类: 如果我们要测试一个类的方法的执行时间,通常我们会这样做: java 代码 public   class  TestObject { /** ...

  4. Java 回调函数详解及使用

    Java 回调函数详解 前言: C语言中回调函数解释: 回调函数(Callback Function)是怎样一种函数呢? 函数是用来被调用的,我们调用函数的方法有两种: 直接调用:在函数A的函数体里通 ...

  5. 【转】JS回调函数--简单易懂有实例

    JS回调函数--简单易懂有实例 初学js的时候,被回调函数搞得很晕,现在回过头来总结一下什么是回调函数. 我们先来看看回调的英文定义:A callback is a function that is ...

  6. java反射回调函数_用J2V8注册Java回调函数

    J2V8是一套针对谷歌的V8 JavaScript引擎的Java绑定.J2V8的开发为Android平台带来了高效的Javascript的执行环境,taris.js 就是基于J2V8开发的.J2V8同 ...

  7. Java回调函数理解和应用

    #Java回调函数理解和应用 所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的. 在未理解之前,我也是一脸懵逼,等我理 ...

  8. 回调函数注入(Callback Injection)实例汇总

    由于篇幅原因可以从gzh获取完整内容和下载链接: 回调函数注入(Callback Injection)实例汇总--50/91 1.回调函数注入 (C#) 通过 CertFindChainInStore ...

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

    原文地址为: Java 回调函数(传统方法和lambda方法)-一个例子秒懂 背景: 想写一个工具类 Tool.java ,其中方法 public void readOneLine() 负责一行一行地 ...

  10. Java 回调函数Callback

    参考:http://blog.csdn.net/fengyifei11228/article/details/5729445 http://kidult.iteye.com/blog/148982 所 ...

最新文章

  1. lintcode :Remove Duplicates from Sorted Array II 删除排序数组中的重复数字 II
  2. django3.2.8配置使用mysql
  3. 基于暗通道优先算法的去雾应用(Matlab/C++)
  4. ECharts 点击非图表区域的点击事件不触发问题
  5. docker容器配置加速器
  6. Android中土司(Toast)的使用
  7. HTML 5.1 的 14 个新特性(含使用案例)
  8. PYTHON学习0011:enumerate()函数的用法----2019-6-8
  9. 使用python-nmap 搭建基本端口扫描器
  10. 频谱分析幅值单位_FFT分析的注意事项,您都知道吗?
  11. sqrt()平方根计算函数的实现1——二分法
  12. minus出错matlab,请求帮忙指点MATLAB中的语法错误
  13. 使用iView构建Vue项目步骤
  14. Float,Double单双精度在线转换成二进制
  15. python实现登录抓取_Python网页抓取、模拟登录
  16. 拓端tecdat|R语言Fisher检验探究地区间公寓价格的关系
  17. 电脑应该如何升级bios版本
  18. 股市的逻辑-201006-2
  19. 计量经济学及Stata应用 陈强 第九章模型设定与数据问题习题9.3
  20. 读Google MapReduce后有感

热门文章

  1. 复制百度文库及其他收费文档的方法
  2. POP3邮件客户端程序
  3. HP 288 Pro G5 BIOS降级F5
  4. win10 修改hosts文件
  5. 用“压缩映射”原理证明数列收敛
  6. c语言程序设计高校饭卡系统,C语言课程设计-学生饭卡管理系统(45页)-原创力文档...
  7. java 生成kml文件_java使用dom4j解析大量坐标点的kml文件
  8. C#与PLC通信开发之松下FP系列PLC
  9. C++,error c2662 cannot convert 'this' pointer from 'const A' to 'A '
  10. Dsoframer注册方法