我的理解:
在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 }