我是靠谱客的博主 高贵仙人掌,最近开发中收集的这篇文章主要介绍Java回调简单理解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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回调简单理解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部