Java中的接口回调

6

直接回调

类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的方法实现。