Java回调简单理解
2017-08-01 17:00
471 查看
1.回调简介
在编写程序时,不同模块之间总会存在一些相互调用,那java的回调简而言之就是类A中a()方法调用类B中b()方法,b()方法执行完后直接调用类A中callback()方法。2.代码示例
情景一:
首先假定有一个Boss,他要自己完成一个项目,计算两个数相加的结果:public class Boss { private int add(int x, int y) { int result = x + y; return result; } public void doWork(int x, int y) { int data = add(x,y); System.out.println("完成了,结果为" + data); } }
自然这个项目很容易完成:
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Boss boss = new Boss(); boss.doWork(1, 1); } }
**运行结果:** 完成了,结果为2
情景二:
当然老板有更重要的是要做,像这类工作找个员工搞定就行,所以Boss把任务交给员工Worker,并且做完后告诉Boss。Boss做如下更改:
public class Boss { // 发布任务 public void assignTask(int x,int y,Worker worker){ worker.doWork(x, y, this); } // 听取员工完成工作后的汇报 public void listen(int result){ System.out.println("嗯,我知道了结果为" + result + ",good job!"); } }
新增员工Worker类:
public class Worker { public void doWork(int x,int y,Boss boss){ int result = x + y; System.out.println("亲爱的boss,我做完了~"); // 员工向老板汇报 boss.listen(result); } }
测试如下:
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Boss boss = new Boss(); Worker worker = new Worker(); boss.assignTask(1, 1, worker); } }
**运行结果:** 亲爱的boss,我做完了~ 嗯,我知道了结果为2,good job!
在这里其实已经实现我们所说的回调,但是Worker的doWork(int x,int y,Boss boss)方法中第三个参数已经限定了该员工只能听取一个Boss的安排,如果老板娘安排工作那也是必须做的~所以回调一般是通过接口实现的。
通过接口:
新增一个接口,并把上面的代码做如下更改。把需要回调的方法定义在接口中:
public interface CallBack { public abstract void listen(int result); }
Boss类通过实现接口CallBack来继承并重写listen方法:
public class Boss implements CallBack { // 发布任务 public void assignTask(int x, int y, Worker worker) { worker.finish(x, y, this); } // 听取员工完成工作后的汇报 @Override public void listen(int result) { // TODO Auto-generated method stub System.out.println("嗯,我看到了结果为" + result + ",good job!"); } }
员工Worker中doWork(int x,int y,CallBack callBack)第三个参数更改CallBack,这样一来只要某一个类实现了CallBack接口都可调用该方法,所以老板娘安排工作也没问题了~
public class Worker { public void finish(int x,int y,CallBack callBack){ int result = x + y; System.out.println("亲爱的Boss,我做完了"); callBack.listen(result); } }
我在新增一个老板娘Landlady:
public class Landlady implements CallBack { public void assignTask(int x, int y, Worker worker) { worker.finish(x, y, this); } @Override public void listen(int result) { // TODO Auto-generated method stub System.out.println("嗯,我看到了结果为" + result + ",小伙子干得漂亮!"); } }
测试如下:
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Boss boss = new Boss(); Landlady landlady = new Landlady(); Worker worker = new Worker(); boss.assignTask(1, 1, worker); landlady.assignTask(2, 2, worker); } }
**运行结果:** 亲爱的Boss,我做完了 嗯,我看到了结果为2,good job! 亲爱的Boss,我做完了 嗯,我看到了结果为4,小伙子干得漂亮!
对于回调就简单介绍到这了。
生活不只是敲代码,如果你或你身边的人喜欢摄影或者生活的点点滴滴,可以关注下我亲爱的公众号~
相关文章推荐
- 一个简单例子让你彻底理解java回调机制
- Java 简单理解回调与回调方法
- 关于回调的简单理解(java)
- Java回调的简单理解
- JAVA 最简单的回调理解
- 最简单的例子理解java回调
- 浅谈Java回调机制的简单理解
- Java中回调的简单理解
- 一个经典例子让你彻彻底底理解java回调机制
- 一个经典例子让你彻彻底底理解java回调机制
- 回调函数透彻理解Java
- 简单理解Java中的类、对象、继承、多态等概念
- java "回调【 Callback 】" 的理解和使用<借鉴>
- 机器学习入门 一、理解机器学习+简单感知机(JAVA实现)
- 一个经典例子让你彻彻底底理解java回调机制
- java的回调函数理解
- java中继承与组合的简单理解
- 简单理解java.lang.IllegalStateException异常
- 一个经典例子让你彻彻底底理解java回调机制(一)
- 通俗易懂理解Java回调机制