1、首先有一个接口CallBack,接口中有个Operate方法。
2、A类实现了CallBack接口,并重写Operate方法。
3、B类中有一个方法,且这个方法有个参数为CallBack类型。
4、A类拥有B类的引用,这时在A类中就可以执行B类中的方法,在A类中执行B类中包含CallBack参数的方法,这个参数为A类自身的引用,那么就可以在B类中回调A类中的Operate方法了。
示例代码如下
public interface CallBack {
void solve(String result);
}
public class A implements CallBack{
private B b;
public A(B b) {
this.b = b;
}
public void askQuestion(final String question){
doOtherSomething();
new Thread( new Runnable(){
@Override
public void run() {
b.solveQuestion(A.this, question);
}
}).start();
doOtherSomething();
}
private void doOtherSomething() {
for (int i = 0; i < 50; i++) {
System.out.println("此时我还在做别的事情 "+i);
}
}
@Override
public void solve(String result) {
System.out.println(result);
}
}
public class B {
public void solveQuestion(CallBack callback,String question){
callback.solve("hello world!");
}
}
public class Test {
public static void main(String[] args) {
B b = new B();
A a = new A(b);
a.askQuestion("学一门新的语言最先写什么");
}
}