关闭

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

480人阅读 评论(0) 收藏 举报

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

如函数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());
	}
}

 

 
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:329363次
    • 积分:8939
    • 等级:
    • 排名:第2254名
    • 原创:1096篇
    • 转载:14篇
    • 译文:0篇
    • 评论:5条
    最新评论