回调接口:

  我们都知道,一个线程在运行中,遇到一个耗时操作(方法)时,会开启另外一个线程,即所谓 -- 异步 。java中 回调接口 也必然应用与异步加载。 所谓 回调接口 ,也就是线程运行中 遇到一个耗时操作(方法),开启一个子线程,在子线程中将该操作(方法)交给

另外一个对象去完成。而被交付完成任务的对象,执行操作完毕之后,需要把信息回传给原对象。这种时候就必须使用 回调接口 技术。也就是网上流传的方法,A 调用 B 的 c 方法(为了获取 (所需要知道的) 信息),B 再反过来调用 A 的 d 方法(为了传达(A想要知道的)信

息)。而那个 d 方法 (也就是接口的实现方法) 被称为 回调方法

  即实现回调方法的要素为:

    1、A 类 要将 B 类 作为它的成员变量,并且引用。(构造方法初始化时加载B)

    2、B 类需要定义一个接口,然后在 把信息回传给 A类 的方法中,把接口作为参数传递过去,然后实现接口的抽象方法,把 A 想知道的信息传入。

    3、A 在调用 上述(红色)方法 时,必须实现该接口的方法。也就是 回调方法。完成通信。

代码如下:

//小明类 --> 他有一个问题需要询问老王。
public class XiaoMing implements CallBack { // 1、将老王类声明为他的成员变量
LaoWang laoWang; // 小明的构造方法,用来对老王的引用
public XiaoMing(LaoWang laoWang) {
this.laoWang = laoWang;
} // 向老王问问题 (耗时操作)
public void askQuestion(String question) { // 开启线程
new Thread(new Runnable() { @Override
public void run() { // 调用老王的方法 来获取答案。
laoWang.solve(XiaoMing.this, question); }
}).start(); //问完问题,小明可以去干其他的,也就是(异步)
play();
} public void play(){
System.out.println("我去玩耍了...");
} // 回调方法 result --> 就是老王传过来的答案
@Override
public void callback(String result) {
System.out.println(result);
} }
//老王类  --> 他有帮小明解决问题的能力(方法)
public class LaoWang { //这是解决问题的方法,必须要将接口作为你的参数传递过去
public void solve(CallBack callback,String question){ System.out.println("小明问的问题是--->"+ question); //模拟老王解决问题所花费的时间
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
} String result = "答案是2"; //把答案传入接口的参数
callback.callback(result);
} //当你解决完问题以后,必须要定义一个接口,来将你的答案回复给小明。
//否则小明无法接收你的答案。
public interface CallBack{
void callback(String result);
}
}
//测试类
public class Test { public static void main(String[] args) { LaoWang laoWang = new LaoWang(); XiaoMing xiaoMing = new XiaoMing(laoWang); //小明问的问题
xiaoMing.askQuestion("1+1=?");
} }

Java--回调接口的更多相关文章

  1. JAVA回调接口的理解

    A类持有B接口的对象引用,B接口有一个callBack()方法,C类是B类的实现类,实现了callBack()方法,把C类传入A类,当A类执行完操作后调用callBack()方法,这时候A调用的就是C ...

  2. Java回调方法详解

    回调在维基百科中定义为: 在计算机程序设计中,回调函数,是指通过函数参数传递到其他代码的,某一块可执行代码的引用. 其目的是允许底层代码调用在高层定义的子程序. 举个例子可能更明白一些:以Androi ...

  3. 【java回调】java两个类之间的回调函数传递

    背景交代:熟悉用js开发的cordovaAPP:对java一窍不通的我,老师让做一个监测用户拍照事件的功能,无奈没有找到现成的库,无奈自己动手开发java插件~~0基础java GreenHand,祝 ...

  4. JAVA回调机制和观察者模式实例分享

    回调函数在JAVA中使用频繁,比如Swing可视化编码中的监听事件等等,一般回调函数都是,通过某一个方法的执行,自动调用回调对象的回调方法,比如,有一个接口,里面有一个方法onNotify(),这个方 ...

  5. 深入浅出: Java回调机制(异步)

    一.什么是回调 回调,回调.要先有调用,才有调用者和被调用者之间的回调.所以在百度百科中是这样的: 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用.回调和异步调用. 回调 ...

  6. Java回调函数

    维基百科上的定义:在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用.这一设计允许了底层代码调用在高层定义的子程序. 所谓回调,就是客户程序C调用服务程 ...

  7. Android回调接口的写法

    方法一: 定义一个接口,里面写想要对外提供的方法,在逻辑层方法的参数里传递进去,让在需要的时候调接口里的方法. 实例一: public class SmsUtils { public interfac ...

  8. Java回调实现

    一.回调的形式 1. C.C++和Pascal允许将函数指针作为参数传递给其它函数.JavaScript,Python,和PHP允许简单的将函数名作为参数传递. 2. .NET Framework的语 ...

  9. 浅谈Java回调机制

    像许多网上介绍回调机制的文章一样,我这里也以一个现实的例子开头:假设你公司的总经理出差前需要你帮他办件事情,这件事情你需要花些时间去做,这时候总经理肯定不能守着你做完再出差吧,于是就他告诉你他的手机号 ...

  10. Java 回调函数

    下面使用java回调函数来实现一个测试函数运行时间的工具类: 如果我们要测试一个类的方法的执行时间,通常我们会这样做: public class TestObject { /** * 一个用来被测试的 ...

随机推荐

  1. 我来谈谈PHP和JAVA的区别

    这里的标题写的是谈谈PHP和JAVA的区别,其实是委婉的说法,其实别人是想听PHP好还是JAVA好!!! 从而从中找到存在感!!! 因为由于我是从多年的php开发转到java开发的.所以最,不时的有好 ...

  2. Zepto源码分析-form模块

    源码注释 // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT l ...

  3. Spring+SpringMVc+Mybatis实现数据库查询

    大家好,本篇博客小Y将会给大家带来一篇SSM框架实现数据查询的Demo,使用的数据库是Mysql,Server是TomCat.现在的SSM整合非常流行,因为springmvc的高效和mybatis的灵 ...

  4. poj3648

    poj3648 题意 有一对新人结婚,n-1对夫妇去参加婚礼.有一个很长的座子,新娘与新郎坐在座子的两边(相反).接下来n-1对夫妇就坐,其中任何一对夫妇都不能坐在同一边,且(有一些人有奸情)这些有奸 ...

  5. c++概括

    c++到底是什么样的语言 在过去的几十年,计算机技术的发展令人吃惊,当前的笔记本电脑的计算速度和存储信息的能力超过了20世纪60年代的大型机.20世纪七十年代,C和Pascal语言引领人们进入结构化编 ...

  6. html表格表单标签的结合

    今天我尝试将表格表单基本标签结合起来放在网页中,发现再没用表单元素中<form></form>时各类标签功能都可显示,只是不能提交网页,所有与提交网页的标签都不能使用提交功能, ...

  7. [原创]使用logcat快速抓取android崩溃日志

    在android APP测试过程中会发生不少的crash,目前抓取日志的主流方法是通过eclipse或者eclipse的ddms组件进行捕抓,这两种方法有个缺点是启动时非常耗时.本文通过adb程序与b ...

  8. 提高java编程质量 - (一)易变业务使用脚本语言编写

    脚本语言的3大特征: 1.灵活:脚本语言一般是动态类型,可以不声明变量类型直接使用,也可以在运行期改变类型:2.便捷:脚本语言是解释性语言,在运行期变更非常方便,而不用重启服务3.简单:脚本语言语法比 ...

  9. Perl正则表达式例子

    Perl正则表达式 一.介绍 正则表达式各语言都有自己的规范,但是基本都差不多,都是由元字符的组合来进行匹配:由于Nmap内嵌的服务与版本探测是使用的Perl正则规范,因此此篇博客记录一下Perl正则 ...

  10. 【JavaScript学习】-JS内置对象2-Data对象

    Date对象: Data对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 定义: //默认初始值定义: var dataName=new Date(); /*使用关键字new;Da ...