什么是回调?,简单来说就是在“A类调用B类中的c方法,B类调用A类中的d方法”这个d方法就是回调方法。
回调机制的几个步骤
- 声明一个CallBack接口
- 类A实现CallBack,在包含B类的引用,并把这个引用作为类A方法中的参数
- 在类A中调用B类中的c方法
- 在B类中调用A类中的f方法,该f方法就是回调方法
那就按步骤一步一步来吧。。
1.创建CallBack.java
/**
* 这是个回调接口
* @author Administrator
*
*/
public interface CallBack {
void solve(String result);
}
2.创建Student.java并实现CallBack接口
public class Student implements CallBack {
//这就是步骤二
private Teacher teacher;//引用Teacher
public Student(Teacher teacher) {
this.teacher=teacher;//创建student并初始化teacher
}
/**
* 学生问老师的问题
* @param question
*/
public void askQuestion(final String question){
new Thread(new Runnable(){
@Override
public void run() {
teacher.handlerQuestion(Student.this, question);//调用teacher中的方法----这就是步骤3
}
}).start();
}
@Override
public void solve(String result) {
System.out.println("学生问老师的题目的结果为:"+result);
}
}
3.创建Teacher.java
public class Teacher {
/**
* 老师解决解决问题的的答案
* @param call
* @param question
*/
public void handlerQuestion(CallBack call,String question){
System.out.println("学生问老师的题目为"+question);
String result="2";
call.solve(result); //这个就是回调的方法,调用了学生中的solve()方法---这就是步骤4
}
}
4.Test.java测试类
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Teacher teacher=new Teacher();
Student student=new Student(teacher);
student.askQuestion("1+1");
}
}
5.运行结果:
学生问老师的题目为1+1
学生问老师的题目的结果为:2
6.总结:java的回调机制我的理解就是这样的,“就是A类调用B类中的c方法,B类调用A类中f的方法,该f方法就是回调”有不对的地方请指正!