java回忆录 输入输出_java回忆录——接口回调机制(1)

回忆一些丢了的东西,蛮有心得的

在java中回调机制是用得很多的,比如Runnable 中的run方法 ,在Android里面也大量用到了这种机制,其实也不是很难,在生活中我们也遇到这个 最明显的就是打电话。

什么是回调,网上有很多通俗的解释:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调 ,其实就是:我打你脑袋(A类中调用B类中的某个方法C),你抽我大嘴巴子(B类中反过来调用A类中的方法D)这个大嘴巴子就是回调咯,这形象了吧 ^_^

好上代码吧

首先有一个回调的CallBack 接口  自然就有实现类 A

package org.blueskytoolkit.source.callback;

/**

* 回调接口

* @author zw

* 2016年5月30日下午3:16:10

*/

public interface CallBack {

public void message(String meg);

}

实现类A

package org.blueskytoolkit.source.callback;

/**

* 实现回调

* @author zw

* 2016年5月30日下午3:19:10

*/

public class A implements CallBack {

/**

* 回调的结果

* 也就是大嘴巴子

*/

@Override

public void message(String meg) {

System.err.println(meg);

}

private B b;

public A(B b){

this.b = b;

}

/**

* A 中的方法

* @param question

*/

public void askQuestion(final String question){

System.err.println(question);

//这里用一个线程就是异步,

new Thread(new Runnable() {

@Override

public void run() {

//调用b中“脑袋”

b.executeMessage(A.this, question);

}

}).start();

other();

}

/**

* 你懵逼了一会

*/

public void other(){

System.err.println("执行其他事物---等待B反馈结果");

}

}

package org.blueskytoolkit.source.callback;

public class B {

/**

*

* @param callBack 其实可以理解为 A 对象

* @param question A对象传过来的信息

*/

public void executeMessage(CallBack callBack, String question){

System.err.println("B接收到: "+question);

/**

* 模拟耗时操作

*/

for(int i=0; i<10000;i++){

}

String result = "我是B-- 接收到反馈意见,并已采纳,非常感谢";

/**

* 把耗时结果返回回调接口

* 我打你大嘴巴子

*/

callBack.message(result);

}

}

好了代码基本就是以上这些

测试代码

package org.blueskytoolkit.source.callback;

public class Test {

public static void main(String[] args) {

B b = new B();

A a = new A(b);

/**

* 异步调用b中的方法

*/

a.askQuestion("我是A -- 我在给B反馈意见");

}

}

0818b9ca8b590ca3270a3433284dd417.png

嗯~~现在应该懂了吧,刚开始学的时候也是蒙了  什么鬼回调接口,其实用生活中的一些现象解释就很容易懂了

希望能帮助到你们

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值