博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习之Java实现CallBack功能
阅读量:5260 次
发布时间:2019-06-14

本文共 1254 字,大约阅读时间需要 4 分钟。

    回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在回调函数中处理消息或完成一定的操作。

定义三个类,分别是主函数类,callback函数的接口类,业务处理类,在业务处理类中,处理完业务之后,执行一个callback函数。

package comz;    public class Main {      public static void main(String[] args) {          new TestCallBack().compute(1000, new ComputeCallBack() {                @Override              public void onComputeEnd() {                  System.out.println("end back!!!");                }          });      }  }

这是主函数类。new了一个业务处理类来处理逻辑,并在处理完毕之后,执行callback函数。

package comz;    public class TestCallBack {        public void compute(int n, ComputeCallBack callback) {          for (int i = 0; i < n; i++) {              System.out.println(i);          }          callback.onComputeEnd();      }  }

这是业务处理类。仅仅输出一些数字,然后执行回调函数。

package comz;    public interface ComputeCallBack {      public void onComputeEnd();  }

这是回调函数的接口。

--------------------------------------

运行上面的代码,就会在输出结束的时候调用在Main里面的callback函数,输出

1 0,1,2,3,4,5,6,7,8,9,2 call complete......

--------------------------------------

这里的原理是:

在主类中,新建业务类的时候,传递进去的第二个参数是一个实现了回调接口的匿名类对象。

在业务类中,我们调用了这个对象的onComputeEnd方法。在执行onComputeEnd的时候,jvm会找到这个对象的函数实现并调用。于是就输出了end back!!!

转载于:https://www.cnblogs.com/sunfie/p/5259340.html

你可能感兴趣的文章
Linux 进程资源用量监控和按用户设置进程限制
查看>>
IE浏览器整页截屏程序(二)
查看>>
D3.js 之 d3-shap 简介(转)
查看>>
制作满天星空
查看>>
类和结构
查看>>
CSS3选择器(二)之属性选择器
查看>>
adidas crazylight 2018 performance analysis review
查看>>
typeset shell 用法
查看>>
python 之 循环语句
查看>>
心得25--JDK新特性9-泛型1-加深介绍
查看>>
[转]ceph网络通信模块_以monitor模块为例
查看>>
HDOJ 1754 I Hate It(线段树基本操作)
查看>>
latex tree
查看>>
安装NVIDIA驱动时禁用自带nouveau驱动
查看>>
HDU-1255 覆盖的面积 (扫描线)
查看>>
css3学习01
查看>>
【USACO】 奶牛会展
查看>>
ActiveMQ笔记之点对点队列(Point-to-Point)
查看>>
继承和多态
查看>>
Dijkstra+计算几何 POJ 2502 Subway
查看>>