Java中的回调函数

对于回调函数,最常见的是出现在C语言的程序中,因为牵扯到指针问题,所以这块我也不是很懂,有关C的回调函数可以参考:
C语言回调函数的实例 详情请点击这里

回调函数是指使用者自己定义一个函数,实现这个函数的程序内容,然后把这个函数(入口地址)作为参数传入别人(或系统)的函数中,由别人(或系统)的函数在运行时来调用的函数。函数是你实现的,但由别人(或系统)的函数在运行时通过参数传递的方式调用,这就是所谓的回调函数。简单来说,就是由别人的函数运行期间来回调你实现的函数

在JAVA中,虽然没有指针指向回调函数的地址,可是Java有接口,用它也能实现回调函数:
举个栗子:
平常我们都会碰见难题或者BUG,在这个时候,我们自己不能解决,所以我们得向学霸去求救,当我们问学霸之后,学霸会思考解决方法,在这期间我们也不会等着学霸去解决难题,因为我们还有别的会做的题要去做,所以我们和学霸约定好:我们先去做别的事情,等到学霸解决之后学霸回来通知我们,这里的反过头来通知就是回调函数(俗称:CallBack)

public interface CallBack {
	/*
	*定义接口CallBack 用于回调函数,也可以扩充回调函数的种类和数量
	*/
	public void CallBack(boolean result);
	
}
/*
* 定义学渣类,实现CallBack接口
*/
public class PoorStudent implements CallBack{
	/*
	*  在类中封装学霸类的实例对象,并在构造函数中请求学霸解决问题
	*  注意:这里传入的是this关键字,表示调用当前类的实例对象
	*  这里封装学霸类的信息是为了可以通过该类对象也调用其他的属性
	*/
	SuperScholar superScholar;
	
	public PoorStudent(SuperScholar superScholar){
		superScholar.sloveQuestion(this);
	}
	
	/*
	*  实现回调函数,给出调用接口
	*/
	@Override
	public void CallBack(boolean result) {
		if(result){
			System.out.println("学霸解除了难题,打电话给学渣");			
		}else{
			System.out.println("学霸出现了感情问题,让学渣等明天");
		}
	}
	
}

/*
*  学霸类,负责对学渣类的给出接口进行回调(在函数运行期间)
*/
public class SuperScholar {
	
	public void sloveQuestion(CallBack callBack){
		System.out.println("学霸在帮学渣问题");
		int time=6;
		/*
		 * 回调函数 回调PoorStudent的方法 
		 * */
		callBack.CallBack(caculate(time));
	}
	
	public boolean caculate(int time){
		System.out.println(time+"分钟后...");
		if(time<=10){
			return true;
		}else{
			return false;
		}
	}
}
/*
*  测试类 首先需要学霸存在 在用学渣的构造函数通知学霸解决问题 学霸解决问题之后回头通知学渣
*/
public class Main {
	public static void main(String[] args) {
		SuperScholar sup=new SuperScholar();
		new PoorStudent(sup);
	}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值