[置顶] java 回调函数学习(监听器模式)

回调就是把函数指针做为参数传入

如函数A 做为参数传入函数B

由B函数决定何时 何地 调用函数A

 

经典形象的说明了回调函数(javascript中经常这么用)

function A(){
}

function B(A)
{
   ... ...
   A();
}

 

 

但是在JAVA中不允许将方法作为参数传递,因此只能传递类(接口),然后调用类(接口)里面的方法,这样最终实现回调的方式.

 

回调就是比如我写了一个接口,但是没有写实现类,而现在你写了一个实现类实现了我的接口,但是你不清楚将来谁会使用你的这个类和方法,使用的人都是用的接口为引用类型的。也就是用的类型是接口类型,但是实际赋值则是不知道谁写的实现类的实体

 

public interface ICallback {
	//回调函数接口及方法
	public void   func();
}

 

//回调函数接口实现类
public class ClassWithCallbackFunction implements ICallback {
	public void func() {
		System.out.println("cccccccccccccccccc");
	}
}

 

//调用那个方法执行回调函数,由这个类决定
public class Caller {
	private ICallback callback; // 私有接口成员

	public void setCallback(ICallback callback) {
		this.callback = callback;// 接口成员的实现:从外部传入
	    doCallback(); //实现回调函数
	}

	public void doCallback() { // 回调接口成员的方法
		callback.func();
	}
}

 

public class MainClass {

	public static void main(String[] args) {
		Caller caller = new Caller();
		System.out.println("-------------回调自己写入的方法-------------");
		caller.setCallback(new ICallback() {
			public void func() {
				System.out.println("aaaaaaaaaa");
			}
		});
		System.out.println("-------------回调默认实现类的方法-------------");
		caller.setCallback(new ClassWithCallbackFunction());
	}
}

 

 
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

[置顶] java 回调函数学习(监听器模式)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭