zoukankan      html  css  js  c++  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);
        }
    
    }

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

    你不会的东西,觉得难的东西,一定不要躲。先搞明白,后精湛,你就比别人优秀了。因为大部分人都不舍得花力气去钻研,自动淘汰,所以你执着的努力,就占了大便宜。奋斗就是每一天都很难,可一年比一年容易。不奋斗就是每一天都很容易,可一年比一年越难。怕吃苦的人吃苦一辈子,不怕吃苦的人吃苦一阵子。拼一个春夏秋冬,赢一个无悔人生
  • 相关阅读:
    Access Update 不支持子查询 用查询解决
    vs2005中文乱码
    清理sql日志
    VS2005快捷键使用
    如何用C#改文件名
    C#中使用DirectSound录音
    VS2005打包 到没有.NETFramework2.0的目标机器上安装
    Access中iif,isnull的用法
    水晶报表切换字段视图不能用的问题。
    VS2005中TextBox的ReadOnly属性
  • 原文地址:https://www.cnblogs.com/ahJava/p/9655271.html
Copyright © 2011-2022 走看看