用一句话讲明回调机制就是,在A类里面拥有一个类B的对象,调用B类的某个方法并把自身引用传入,在B类的这个方法里面又通过传进来的A的引用来调用A类的某个方法(这个最后调用的A类的方法就叫做回调方法)。
举一个小例子:
接口里面定义了回调函数(用来给员工回调的)
public interface CallBack { public void Solve(String result); }
类Employer(老板):里面定义了一个员工,然后给员工分配任务并把自己引用传给员工。
package CallBack; public class Employer implements CallBack{ private Employee mEmployee; //员工对象 public Employer(Employee employee){ mEmployee=employee; } public void alignProject(String project){ //给员工分配任务 mEmployee.finishProject(this,project); //老板类调用员工类的方法 } @Override public void Solve(String result) { // TODO Auto-generated method stub System.out.println(result); } }
类Employee(员工):完成了老板分配的任务后通过老板的引用来调用老板给的回调函数(告诉老板自己已经完成任务了)。
public class Employee { public void finishProject(Employer employer,String project){ System.out.println("员工正在为项目"+project+"编码~"); employer.Solve(project+"已经完成!"); //员工完成项目后,使用老板类的对象回调其方法告诉老板任务完成啦! } }
主线程:
public class Main { public static void main(String args[]){ Employee mEmployee=new Employee(); Employer mEmployer=new Employer(mEmployee); mEmployer.alignProject("京城APP"); } }