1。首先回调方法的概念与“构造方法”的概念是不一样的,它不是指java中某个具有特殊意义或用途的方法。
2。称它为方法的“回调”更恰当一些,它是指方法的一种调用方式。任何一个被“回调”的方法,皆可称之为“回调方法”
3。方法的回调通常发生在“java接口”和“抽象类”的使用过程中。
假设有接口名为 ICallBack 其中有方法名为postExec()
有类Myclass 实现了该接口,
也就是一定实现了postExec()这个方法。
现在有另一个类FooBar它有个方法 setCallBack(ICallBack callBack) ,
并且setCallBack方法调用了callBack的postExec()方法。
如果现在,我们使用一个Myclass 的实例myClass,将它作为参数带入到setCallBack(ICallBack callBack)方法中,我们就说setCallBack(ICallBack callBack)方法回调了myClass的postExec()方法。
//声明一个接口
public interface ActionListener{ actionPerformed(ActionEvent e); }
//另外一个类有方法里面有个参数以是这个接口类型的
``
public class Button { addActionListener(ActionListener l)//参数为接口 { l.actionPerformed(e); } } 复制代码
回调的实现
button.addActionListener(new ActionListener() {//接口的实例化 @Override public void actionPerformed(ActionEvent e) { } }); 复制代码
总结:定义一个接口,在另一个类中提前消费接口中得方法,在实例化时必须传入此接口,但是接口不能实例化,必须实现该接口,继承,匿名类默认继承了该接口