网上看的回调实现:
- class A实现接口CallBack callback—— 实现回调接口(可以是匿名内部类即是回调函数)
- class A中包含一个class B的引用b ——持有类B的引用
- class B有一个参数为callback的方法—>f(CallBack callback)—— 持有回调接口的方法
- 类A的某一个方法使用持有类B的引用调用类B的f方法,类B不就用callback引用回调类A的回调方法么。
例子如下:
我们想要问别人一个问题,我们把问题跟对方说了一下,对方说好,等我办完事,我就告诉你,这个时候就用到了回调,因为我们并不知道对方什么时候会做完,我们可以干别的事,而是对方做完了来主动找我们。
代码简单实现:
//回调接口
public interface Callback {
void back();
}
public class TestA implements Callback {
// 回调方法
@Override
public void back() {
System.out.println(" 回调我! 类A来了");
}
public void say(TestB testB) {
System.out.println("类a调用的方法");
testB.printSay(this);
}
}
public class TestB {
public void printSay(Callback callback) {
System.out.println(" TestA, 你好,我是类b,等会啊");
// 可以模拟 线程睡几秒,
callback.back();
}
}
//测试案例
public class Demo {
public static void main(String[] args) {
TestA a = new TestA(); // 创建回调函数
TestB b = new TestB(); //创建类b
a.say2(b);
}
}