java中的接口回调机制
来源:互联网 发布:lua 5.2 for windows 编辑:程序博客网 时间:2024/05/17 04:11
通过这几天对java回调机制的学习,我总结出了自己对回调机制的理解。希望给那些对java回调机制不理解的同学或者没接触过这个的同学参考参考。希望对大家有所帮助!
接口的回调机制有两大好处:1、让程序代码块解耦。2、两个类之间值的互相传递。(当然这个只是我目前能说出的两大好处,回调机制的在安卓当中也是处处存在的哦!当然可能还有其他的我没有总结出来,希望有更多见解的同学能给我提留留言哦!)
我们就以到网上下载图片为例来说明java的接口回调吧!
先见如下A类代码
public class A { // private boolean isDownLoad;// 是否下载 public void loadImage(String url, final CallBack callBack) { new Thread(new Runnable() { @Override public void run() { isDownLoad = true; String result = callBack.downLoadOperate(isDownLoad); System.out.println(result); } }).start(); } interface CallBack { // 下载文件的一系列操作 String downLoadOperate(boolean isDownLoad); }}
代码解释:
A类写了loadImage(String url,..)去网上下载图片的方法,此方法可能只需要处理方法中传递的参数,如对url的处理,或者处理其他与下载图片无 相关的操作。至于到网上去下载图片等这一系列的操作,都是由A类在内部定义了接口CallBack中downLoadOperate(..)方法去执行。注:此处的loadImage()中的参数不用过多的去理解。
注意哦!1、接口回调机制中的参数传值就在这里体现了,通过downLoadOperate(..)方法中的参数传递出去,即isDownLoad的这个参数,根据这个场景在这里它是表明是否允许下载,通过A类值的传递,让B类去判断是否执行下载。从而实现了两个类之间的交互。2、同时也体现了代码的解耦哦!把要下载图片的过程分离出来了,让实现了CallBack接口的类去实现。如讲解到这还不理解,见B代码吧!
B类代码如下:(这边为了方便直接在B类开设了主线程)
public class B { A a = new A(); //内部类的使用哦! a.loadImage("http://www.baidu.com", new CallBack() { @Override public String downLoadOperate(boolean isDownLoad) { String result = null; if(isDownLoad){ System.out.println("正在下载..."); result = "B下载操作成功"; }else{ result = "B下载操作失败"; } return result; } });}}
细枝末节的解释:
1、在B类中必须实现A类中定义的接口
2、A类中会调用该接口 中的某一方法并执行,在执行的同时将A类中的数据通过接口中方法定义的参数,将值传入。从而实现
3、 A类中传值给了B类。
(建议大家先从程序主线程执行处看起即B类的main方法,在去理解每一个细节)
- java中的接口回调机制
- JAVA接口回调机制
- Java接口回调机制
- Java 接口回调机制
- Java接口回调机制
- java接口回调机制
- java接口回调机制
- java 接口回调机制
- java 接口回调机制
- Java 接口回调机制
- Java 接口回调机制
- 了解Android中的接口回调机制
- Java接口回调机制详解
- java的接口回调机制详解
- 深度解析java接口回调机制
- Java接口回调机制详解
- Java中的接口回调
- Java中的接口回调
- windows常用API函数
- navigationBar 的渐变透明效果
- 黑马程序员——接口interface
- LruCache类
- 设计模式 适配器模式
- java中的接口回调机制
- 一道简单题( East Problem from Rujia Liu 11991Uva)(数据结构)(锻炼思维好题)
- struts2动态结果
- php验证码
- 矩形切割-面积求并
- windows批处理 命令
- hdu4417Super Mario【划分树+二分模板】
- 【贪心】Codeforces Round #339 (Div. 2) D
- hdoj 2047 阿牛的EOF牛肉串