欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

接口回调

程序员文章站 2022-10-16 16:33:34
前几天学了接口回调,现在总结一下接口回调是什么原理:假设我们现在需要实现一个通知的功能,需求是A在执行循环,当循环到5的时候, 通知B。以前我们是直接把B类的实例传到A对象中,A类代码如下: B类代码: 主方法: 这样就会有一个缺陷。万一这个A类是早在1988年写好了的,1988年的程序员怎么知道你 ......

前几天学了接口回调,现在总结一下接口回调是什么原理:假设我们现在需要实现一个通知的功能,需求是a在执行循环,当循环到5的时候, 通知b。以前我们是直接把b类的实例传到a对象中,a类代码如下:

package com.itheima.demo;

public class a {
    // 我是a类,我要接口回调
    void printlt(b b) {
        for (int i = 1; i <=10; i++) {
            system.out.println("1988年的第几"+i+"次");
            if (i==5) {
                b.println2();
            }
        }
    }
}

 

b类代码:

package com.itheima.demo;

public class b  {

    public void println2() {
        // todo auto-generated method stub
system.out.println("2018年到了5");
    }

}

 

主方法:

package com.itheima.demo;

public class test {

    public static void main(string[] args) {
        // todo auto-generated method stub
        a a=new a();
        b  b=    new b();
        a.printlt(b);
                //调用a的打印方法
    }

}

 

这样就会有一个缺陷。万一这个a类是早在1988年写好了的,1988年的程序员怎么知道你要传什么对象,要实现什么功能呢?因此出现了接口回调。

我们先定义一个接口:

package com.itheima.demo;

public interface listenerb {
    void println2();
    //定义一个打印的方法
}

使用接口回调的a类代码:

package com.itheima.demo;

public class a {
    // 我是a类,我要接口回调
public    void printlt(listenerb b) {
    //这里就变成了接口的实例
        for (int i = 1; i <=10; i++) {
            system.out.println("1988年的第几"+i+"次");
            if (i==5) {
                b.println2();
                                //这里是接口定义好了的方法,b类只要实现接口的方法就可以了    
            }
        }
    }
}
        

使用接口回调的b类代码:

package com.itheima.demo;

public class b implements listenerb {
//我们只要实现这个接口就可以了
    @override
    public void println2() {
        // todo auto-generated method stub
system.out.println("2018年到了5");
    }

}

主方法:

package com.itheima.demo;

public class test {

    public static void main(string[] args) {
        // todo auto-generated method stub
        a a=new a();
        listenerb b=new b();
        a.printlt(b);
    }

}

这样我们就写好了一个简单的接口回调。