• JAVA 回调


    一、定义   

        回调就是把函数指针做为参数传入,如函数A做为参数传入函数B,由B函数决定何时、何地调用函数A

         function A()

         function B(A)
        {
             call A()
         }

       就是把A传给B,由B决定什么时候调用。

    二、用途

    一个通俗的例子如下:

         你饿了,想吃饭,就一会去问你妈一声"开饭没有啊?"这就正常函数调用。但是今天你妈包饺子,,花的时间比较长,你跑啊跑啊,就烦了。于是你给你妈说,我先出去玩会,开饭的时候打我手机。等过了一阵,你妈给你打电话说"开饭啦,快回来吃饭吧!"。其中,你告诉你妈打手机找你,就是你把回调函数句柄保存到你妈的动作。你妈打电话叫你,就是个回调过程。

    三、java中实现回调

         java中如何实现回调?答案是接口方式:

    1、定义一个接口phone,妈妈通过这个接口来通知孩子

    package test1;
    
    public interface phone {
         public void eat();
    }

    2、定义一个孩子类,实现上面这个接口,供妈妈调用

    package test1;
    
    public class child implements phone
    {
        public void eat()
        {
            System.out.println("孩子吃的很happy~~~");
        }
    }

    3、定义一个妈妈类

    package test1;
    
    public class mum {
         phone phone1;
         //将child作为参数传进来,这里传进来的实际是接口phone,由于child实现了phone,因此相当于将child作为参数传递了进来
         public void setCallback(phone phone1)
         {
             this.phone1 =phone1;
         }
            
         //通知child
         public void callChild() throws Exception
         {
             System.out.println("开始包饺子");
             Thread.sleep(3000);
             System.out.println("饺子包好了");
             
             System.out.println("打电话给孩子,过来吃饺子了");
             phone1.eat();
         }
         
         //主函数
         public static void main(String[] args) throws Exception
         {
             child child1=new child();
             mum mum1=new mum();
             mum1.setCallback(child1);
             mum1.callChild();
         }
    }

     

    运行mum类,输出如下:

    开始包饺子
    饺子包好了
    打电话给孩子,过来吃饺子了
    孩子吃的很happy~~~

     

     

  • 相关阅读:
    Java 虚拟机部分面试题
    Java 多线程部分面试题
    Java IO部分面试题
    Java 集合框架部分面试题
    Java 面向对象面试题
    Java 多线程同步的五种方法
    Python操作redis
    Python操作mysql
    Python操作mongodb
    数据处理的全过程---(获取数据-清洗数据-数据建模-数据可视化)
  • 原文地址:https://www.cnblogs.com/king1302217/p/3213958.html
Copyright © 2020-2023  润新知