JAVA 回调机制
一、什么是回调?
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数
个人理解:说简单点就是我自己不想处理的东西(一系列参数)丢给别人,别人处理好了,给我打电话(调用我给出的函数)。
二、举个栗子:
我有个好的朋友,这里就简称小刘子吧,一天在公司小刘子拿到了老大分给她的任务,但是当天有一场XX的演唱会,她非常想去看,但是还有老大分配的任务呢,那怎么办?她就想能不能让她同事小袁帮她做,等小袁做完直接发给她就好了。
**首先先定义回调接口(相当于电话了)
public interface Work {
public void backWork();
}
接下来要定义(小刘子)这个类了
public class Person implements Work{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person(String name) {
this.name = name;
}
//接电话的方法哦
public void backWork() {
System.out.println("小刘子正在看演唱会Ing...!叮铃铃~~~完工了");
}
}
因为老大要分配工作,她正好也要去看演唱会,So,要找别人帮忙哦!
//求助别人
public void help(String name) {
System.out.println("老大分配完任务!,"+this.name+"赶紧找人帮忙,因为她要去看演唱会,然后找到小袁");
//找人帮忙
//这里this 相当于把自己的电话号码告诉要帮助她的这个人(小袁)
new Colleague(name).helpOther(this);
}
然后在把小袁贴出来~
public class Colleague {
private String name;
public Colleague(String name) {
this.name = name;
}
public void helpOther(Work work) {
System.out.println(name+"开始帮忙工作,哗啦啦哗啦啦~~,工作结束,给小刘子打电话");
//调用小刘子给出的接口(相当于电话号码,结束后给小刘子打电话。)
work.backWork();
}
}
最后测试一下,看看小刘子能不能找到人帮忙~ 哈哈哈哈
public static void main(String[] args) {
Person p = new Person("小刘子");
p.help("小袁");
}
看一下结果
老大分配完任务!,小刘子赶紧找人帮忙,因为她要去看演唱会,然后找到小袁
小袁开始帮忙工作,哗啦啦哗啦啦,工作结束,给小刘子打电话
小刘子正在看演唱会Ing…!叮铃铃,来电话了,小袁说完工了!
—到这里回调基本就结束了~ 第一次写,如果有不对的地方,尽情的指出来吧~ 共同进步~