Java回调函数
JAVA 函数 回调
2023-09-14 09:16:09 时间
Java回调函数
所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。举个例子:学生Student向老师Teacher提问,然后Teacher再回答学生的问题。此问题涉及两个类Student和Teacher。
- 首先在Teacher类中定义askQuestion方法,学生通过此方法向老师提问。
- 老师在收到问题后,经过思索后,需要回答学生的问题,此刻老师需要知道通过什么方式把答案告诉给学生,保证答案能够准确的传递到发问的这个学生,此时就需要定义一个公共的接口,老师通过此接口把答案传递给学生。
Demo:
- 定义用于传递答案的接口:
1 package com.hxl.callback.service; 2 3 public interface Answer { 4 5 public void answerMe(String theAnswer); 6 }
- 定义学生类:学生类需要实现预先约定好的公共接口,以便接收老师传递的答案:
1 package com.hxl.callback.service; 2 3 public class Student implements Answer{ 4 5 public Teacher teahcer; 6 7 public void answerMe(String theAnswer) { 8 System.out.println(theAnswer); 9 } 10 11 12 }
- 定义老师类:老师收到学生提出的问题后,经过思索得出答案,通过预先定义好的接口将答案传递给提问的学生
1 package com.hxl.callback.service; 2 3 public class Teacher { 4 5 public Answer answer; 6 7 public void askQuestion(String theQuestion) { 8 System.out.println(theQuestion); 9 } 10 11 public void answerQuestion(String theAnswer) { 12 answer.answerMe(theAnswer); 13 } 14 }
- 测试:
1 package com.hxl.callback.test; 2 3 import org.junit.Test; 4 5 import com.hxl.callback.service.Teacher; 6 import com.hxl.callback.service.Student; 7 8 public class TestCallBack { 9 10 @Test 11 public void testCallBack() { 12 //实例化学生 13 Student student = new Student(); 14 //设定学生向谁发问 15 student.teahcer = new Teacher(); 16 //学生调用老师的askQuestion方法,向老师发问 17 student.teahcer.askQuestion("1+1=?"); 18 //老师注册约定的回调接口 19 student.teahcer.answer = student; 20 //老师回答学生的问题 21 student.teahcer.answerQuestion("1+1=2"); 22 } 23 24 }
TIPS:对于Student来说answerMe方法即为回调函数。
相关文章
- java用什么软件_Java编程什么软件最好用?
- java random函数原理_详解JAVA中Random()函数的用法
- java 删除目录下所有文件_Java删除文件、目录及目录下所有文件的方法实例
- java中打印数组的方法_Java数组方法–如何在Java中打印数组
- 解决:Failed to convert value of type ‘java.lang.String‘ to required type ‘java.util.Date‘;
- java 基础语法
- Java集合类的使用心得
- 一个经典例子让你彻彻底底理解java回调机制是什么_java实现回调函数
- Java之父偏爱函数式编程,称自己的代码风格被队友批评
- Java遍历Map对象的四种方式详解编程语言
- java搜索引擎爬虫,抓取url示例详解编程语言
- 使用Java在Linux系统上开发:一步步安装全部组件(java环境linux)
- java.uti.Date与java.sql.Date 区别详解编程语言
- 服务器使用Java进行Linux服务器监控(java监控linux)
- Linux上部署Java项目实践指南(linux部署java项目)
- 分布式Java实现Redis分布式:从入门到精通(java实现redis)
- Linux和Java联手构建编程世界(linux.java)
- 策略Java中使用Redis实现过期策略(redisjava过期)
- 秘籍学习实现纯Java版Redis(纯java版redis)
- 编程Oracle数据库中实现Java编程的突破之道(oracle使用java)
- Java数组操作的10大方法