JAVA回调机制CallBack
序言
最近学习java,接触到了回调机制(CallBack)。初识时感觉比较混乱,而且在网上搜索到的相关的讲解,要么一言带过,要么说的比较单纯的像是给CallBack做了一个定义。当然了,我在理解了回调之后,再去看网上的各种讲解,确实没什么问题。但是,对于初学的我来说,缺了一个循序渐进的过程。此处,将我对回调机制的个人理解,按照由浅到深的顺序描述一下,如有不妥之处,望不吝赐教!
开始之前,先想象一个场景:幼稚园的小朋友刚刚学习了10以内的加法。
第1章. 故事的缘起
幼师在黑板上写一个式子 “1 + 1 = ”,由小明同学来填空。
由于已经学习了10以内的加法,小明同学可以完全靠自己来计算这个题目,模拟该过程的代码如下:
1 public class Student 2 {
3 private String name = null;
4
5 public Student(String name) 6 {
7 // TODO Auto-generated constructor stub
8 this.name = name; 9 } 10
11 public void setName(String name) 12 {
13 this.name = name; 14 } 15
16 private int calcADD(int a, int b) 17 {
18 return a + b; 19 } 20
21 public void fillBlank(int a, int b) 22 {
23 int result = calcADD(a, b); 24 System.out.println(name + "心算:" + a + " + " + b + " = " + result); 25 } 26 }</pre>
小明同学在填空(fillBalnk)的时候,直接心算(clacADD)了一下,得出结果是2,并将结果写在空格里。测试代码如下:
1 public class Test 2 {
3 public static void main(String[] args) 4 {
5 int a = 1;
6 int b = 1;
7 Student s = new Student("小明");
8 s.fillBlank(a, b);
9 } 10 }</pre>
运行结果如下:
小明心算:1 + 1 = 2</pre>
该过程完全由Student类的实例对象单独完成,并未涉及回调机制。
第2章. 幼师的找茬
课间,幼师突发奇想在黑板上写了“168 + 291 = ”让小明完成,然后回办公室了。
花擦!为什么所有老师都跟小明过不去啊?明明超纲了好不好!这时候小明同学明显不能再像上面那样靠心算来完成了,正在懵逼的时候,班上的小红同学递过来一个只能计算加法的计算器(奸商啊)!!!!而小明同学恰好知道怎么用计算器,于是通过计算器计算得到结果并完成了填空。
计算器的代码为:
1 public class Calculator 2 {
3 public int add(int a, int b) 4 {
5 return a + b; 6 } 7 }</pre>
修改Student类,添加使用计算器的方法:
1 public cla