当前位置: 移动技术网 > IT编程>开发语言>Java > 接口回调

接口回调

2018年09月16日  | 移动技术网IT编程  | 我要评论

前几天学了接口回调,现在总结一下接口回调是什么原理:假设我们现在需要实现一个通知的功能,需求是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);
    }

}

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网