回调:就是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("一个问题"); } }