Java中的接口回调
直接回调
类A要调用类B中的方法b(),类A中直接创建B对象,调用方法b(),这就是直接回调。
回调方法
但是b()方法的实现要用到类A中的a()方法,这个a()方法就叫回调方法。
直接调用存在的问题
A与B耦合度太高,A修改了a()方法,可能类B也要修改。
接口实现回调
定义接口
public interface CallBack {
public void a();
}
类A定义
public class A implements CallBack {
public B b;
@Override
public void a() {
System.out.println("a方法");
}
}
类B定义
public class B {
public CallBack call;
public B(CallBack call) {
this.call = call;
}
public void b() {
call.a();
}
}
测试
public class Test {
public static void main(String[] args) {
A a = new A();
B b = new B(a);
a.b = b;
a.b.b();
}
}
总结
在类B中声明的是类A实现接口名,通过多态的方法,将类A传入类B中,在类B中调用类A实现的接口方法a()。这样隔离了类A和类B的方法实现。