Fork me on GitHub

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 }

 

posted @ 2016-08-20 20:07  gouermazi  阅读(141)  评论(0编辑  收藏  举报