转载请标明出处:http://blog.csdn.net/qq1940879801/article/details/50120959
以前写过一些博客,觉得没什么不够深入,痛定思痛,决定写一些高质量的博客。
由于本人水平有限,希望大神指出不足,欢迎留言。
最近我在群里比较活跃,经常回答别人问题,今天别人问我什么是回调,我回答之后,觉得不够详细,特意写出此篇博客。
定义两个类:Jesse,XiaoMing
人物:小明(一个群友),jesse(我)
小明问jesse,什么是回调。jesse对小明说,等我忙完手头这点事,就帮你解答。然后小明去做其他事,等jesse忙完事,这时候jesse找小明讲解什么是回调。这就是回调。
1.定义一个类,叫XiaoMing。定义2个方法,一个是问问题,一个是得到答案
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
/**
* @ClassName: XiaoMing
* @Description: TODO
* @Author: Jesse
* @Date: 2015-11-30 下午10:50:23
* @Copyright: 2015 Jesse Inc. All rights reserved.
*/
public
class
XiaoMing {
public
void
askQuestion(String question) {
System.out.println(
"小明问jesse:"
+question);
}
public
void
getResult(String result) {
System.out.println(
"jesse告诉小明:"
+result);
}
}
|
2.定义一个类,叫Jesse。定义一个方法和接口,在方法里面调用小明的问问题的方法,然后和他说自己有事,接着就去忙事(线程里面的耗时操作),然后处理完事就联系小明,并把答案告诉他。这里通过接口里的方法告诉小明答案。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/**
* @ClassName: Jesse
* @Description: TODO
* @Author: Jesse
* @Date: 2015-11-30 下午10:54:53
* @Copyright: 2015 Jesse Inc. All rights reserved.
*/
public
class
Jesse {
private
XiaoMing xiaoMing;
public
Jesse(XiaoMing xiaoMing){
this
.xiaoMing=xiaoMing;
}
public
void
answer(
final
CallBack callBack,String question){
xiaoMing.askQuestion(question);
System.out.println(
"jesse对小明说:等我忙完手头这点事,就帮你解答。"
);
new
Thread(
new
Runnable() {
public
void
run() {
try
{
Thread.sleep(
2000
);
//耗时操作,jesse在做其他事
}
catch
(InterruptedException e) {
e.printStackTrace();
}
//jesse事情忙完,帮小明解答
if
(callBack!=
null
) {
callBack.result(
"这就是回调
"
);
}
}
}).start();
}
interface
CallBack{
void
result(String result);
}
}
|
3.实例化XiaoMing和Jesse,调用jesse的方法,重写接口里面的方法,调用xiaoming的方法,得到答案。并把 问题 做参数传递过去。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import
com.jesse.callback.Jesse.CallBack;
/**
* @ClassName: CallBackDemo
* @Description: TODO
* @Author: Jesse
* @Date: 2015-11-30 下午10:31:34
* @Copyright: 2015 Jesse Inc. All rights reserved.
*/
public
class
CallBackDemo {
private
static
XiaoMing xiaoMing;
public
static
void
main(String[] args) {
xiaoMing =
new
XiaoMing();
Jesse jesse=
new
Jesse(xiaoMing);
jesse.answer(
new
CallBack() {
public
void
result(String result) {
xiaoMing.getResult(result);
}
},
"什么是回调"
);
//问题:什么是回调
}
}
|
运行结果
欢迎指出不足,没事下留言,你的支持,是我写下去的动力