java回调函数

在java中是存在回调函数的,我们可以把回调函数理解为一个被作为参数传递的函数。

类似于,我可以设置一个功能给系统,但是只有特定时候才会触发,触发的时候就会把函数作为参数的形式传递到另外的函数中。一般都是使用系统中写好的接口功能时使用。
下面是一个实现过程

实现方法方法一:

类A

public class A implements Callback {
    public void a(){
        System.out.println("这是A类的a方法");
        B b=new B();
        b.b(this);
        System.out.println("A类"+this);
    }
    @Override
    public void callback(){
        System.out.println("回调函数");
    }
}

类B

public class B {
    public void b(Callback callback){
        System.out.println("这是类B的b方法");
        callback.callback();
        System.out.println("B类"+this);
    }
}

回调函数接口:

public interface Callback {
    void callback();
}

客户端:

public class Client {
    public static void main(String[] args) {
        A a=new A();
        a.a();
    }
}

结果:
java回调函数_第1张图片
可以看到,其实就是将回调接口的实现类传入到了参数中,也会实现实现类的初始化过程,然后在在调用者方使用实现类这个对象调用回调函数

而我们一般都会使用第二种方法,就是匿名内部类的方法

方案二:匿名内部类

这是一个使用zookeeper接口的inBackground的功能,这个时候需要一个回调函数接口的对象,于是便使用此种方式
java回调函数_第2张图片

回调函数优点

反正就是,什么内部类、接口、抽象类,都是为了灵活、解耦合,一个意思

灵活性
使用回调函数可以在不改变原始函数的情况下,通过传递不同的函数来实现不同的行为,从而使代码更加灵活和可扩展。(意思就是可以传入不同回调函数的实现类,是的代码更加灵活

解耦性
通过将回调函数定义在接口中,实现了调用方和回调方之间的解耦。调用方只需要关注接口的定义,而不需要关心具体的回调逻辑,从而降低了代码的耦合度。(通过接口既可以看出参数在被调用函数中作用

异步处理
回调函数常常用于处理异步操作,如网络请求、文件 I/O 等。通过使用回调函数,可以在异步操作完成时得到通知并处理相应的结果,从而避免阻塞主线程,提高程序的性能和响应性。

代码复用
通过定义接口和实现不同的回调类,可以在多个地方重复使用相同的回调逻辑,从而实现代码的复用。

你可能感兴趣的:(java,开发语言)