Java中的回调

我的理解:

  在A类中调用B类的方法b,在该b方法中执行完相应逻辑后又会调用A类的方法

 1 package base;
 2 
 3 /**
 4  * A类的回调接口
 5  * 
 6  * @author tab
 7  *
 8  */
 9 public interface CallBack {
10     void solve(String result);
11 }
 1 package base;
 2 
 3 /**
 4  * A类实现该回调接口
 5  * 
 6  * @author tab
 7  *
 8  */
 9 public class Qer implements CallBack {
10     private Aser aser;// 关联被调方
11 
12     public Qer(Aser aser) {
13         this.aser = aser;
14     }
15 
16     public void askQues(final String question) {
17         new Thread(new Runnable() {
18             @Override
19             public void run() {
20                 aser.execute(Qer.this, question);
21             }
22         }).start();
23         play();
24     }
25 
26     private void play() {
27         System.out.println("去玩了");
28     }
29 
30     @Override
31     public void solve(String result) {
32         System.out.println(result);
33     }
34 }
 1 package base;
 2 
 3 /**
 4  * 在B类的方法中,会回调A类所实现的回调接口的回调方法
 5  * 
 6  * @author tab
 7  *
 8  */
 9 public class Aser {
10 
11     public void execute(CallBack callBack, String question) {
12         System.out.println("问题是。。" + question);
13         for (int i = 0; i < 100000; i++) {
14         }
15         String result = "答案是2";
16         callBack.solve(result);
17     }
18 }
 1 package base;
 2 
 3 /**
 4  * 测试,A提出问题,并调用B类的解决问题方法,在该方法的最后B类通过回调A类的回调方法给出问题结果
 5  * 
 6  * @author tab
 7  *
 8  */
 9 public class Test {
10     static Aser a = new Aser();
11     static Qer qser = new Qer(a);
12 
13     public static void main(String[] args) {
14         qser.askQues("1+2=?");
15     }
16 }

 

转载于:https://www.cnblogs.com/tabchanj/p/5791150.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值