• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
阿海在学Java
博客园    首页    新随笔    联系   管理    订阅  订阅

接口回调

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

}

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

你不会的东西,觉得难的东西,一定不要躲。先搞明白,后精湛,你就比别人优秀了。因为大部分人都不舍得花力气去钻研,自动淘汰,所以你执着的努力,就占了大便宜。奋斗就是每一天都很难,可一年比一年容易。不奋斗就是每一天都很容易,可一年比一年越难。怕吃苦的人吃苦一辈子,不怕吃苦的人吃苦一阵子。拼一个春夏秋冬,赢一个无悔人生
posted @ 2018-09-16 10:30  阿海在学Java  阅读(271)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3