编程是一个思想的实现,所以回调也是一种思想;有的人说回调实现的是松耦合的思想;我理解的松耦合就是,实现和调用分离。
回调本质是函数指针调用函数。也就是在这个函数里面调用这个函数。
我们都知道java中没有指针,那么java中是如何来实现,回调的呢?
一般是通过接口来实现的。
其实回调很简单,就是什么呢?就是A类想调用B中的方法,又不能在A中创建B的对象,怎么办呢?
那就让B类实现一个包含A类想用的接口呗。然后在B类中创建A的一个对象,来调用一个A的一个方法,告诉A类,自己把方法包装好了,可以用了。
我将给分成三个类,
1, 连接类也就是接口。
2, 处理事物代码类。
3, 调用类,也就是包含回调方法类。
接口;连接类
public interface ICallBack {
// 回调方法
public void callBackMethod();
}
处理事物代码类;也称为监听器。其实这里面应该包含不仅仅是调用了接口里名的方法,应该还有其他的代码;
public class Caller {
private ICallBack callBack;
public void setCallBack(ICallBack callBack){
this.callBack = callBack;
}
public void call(){
this.callBack.callBackMethod();
}
}
调用类;次类中一般会用匿名内部类来注册监听器。有的也用一个类先来实现接口;如下面
public class Main {
public static void main(String[] args) {
Caller caller = new Caller();
caller.setCallBack(new CallBackListener());
// 在业务处理的时候调用
caller.call();
}
}
接口实现类;他也可以定义成匿名内部类;
public class CallBackListener implements ICallBack {
@Override
public void callBackMethod() {
System.out.println("回调");
}
}
总结以上的就是;
定义一个接口,实现接口,调用接口;
调用接口类是一个,实现事物类。
实现接口类,一般是调用类,接口实现类作为匿名内部类,在方法中实现。
总的来说,就是为了实现接口的方法,而来回的调用。
在不明白,下面是我转来的
1.接口回调是什么[2]?
接口回调是指:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。看下面示例。
interface People{
void peopleList();
}
class Student implements People{
public void peopleList(){
System.out.println("I’m a student.");
}
}
class Teacher implements People{
public void peopleList(){
System.out.println("I’m a teacher.");
}
}
public class Example{
public static void main(String args[]){
People a; //声明接口变量
a=new Student(); //实例化,接口变量中存放对象的引用
a.peopleList(); //接口回调
a=new Teacher(); //实例化,接口变量中存放对象的引用
a.peopleList(); //接口回调
}
}
结果:
I’m a student.
I’m a teacher.