回調:就是A類中調用B類中的某個方法C,而後B類中反過來調用A類中的方法D,D這個方法就叫回調方法,比較經典的回調方式:異步
下面經過例子來實異步回調機制。ide
首先創建一個接口測試
public interface Callback { public void solve(String msg); }
class A實現接口CallBackthis
public class A implements Callback { private B b;//引用B的對象 public A (B b) { this.b = b; } //經過這個方法問B問題 public void ask(String question) { //這裏用一個線程來表示異步 new Thread(new Runnable() { @Override public void run() { //A調用B中的方法,在這裏註冊回調接口 b.answerQuestion(A.this, question); } }).start(); } //這裏A能夠作一些其餘的事情 //B知道答案後調用此方法告訴A,就是A的回調方法 @Override public void solve(String s) { System.out.println("答案是:" + s); } }
創建class B線程
public class B { public void answerQuestion(call_back cb, String s){ System.out.println("A 的請求是:" + s); try { Thread.sleep(1000); //作一些事情 } catch (InterruptedException ex) { ex.printStackTrace(); } String result = "這個"; //調用A中的方法,即B類反過來調用A的方法D cb.solve(result); } }
新建一個測試類code
public class Test { public static void main(String[] args) { B b = new B(); A a = new A(b); a.ask("一個問題"); } }