回调函数,引用故事情节+简单代码的示例更易理解

本文通过一个生动的比喻,解释了Java中的回调机制。通过老板、员工A和员工B的角色扮演,展示了如何在运行时动态决定调用的方法,体现了回调的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一个interface的项目,现在需要处理。老板对这个项目很有经验,心里有自己的处理方法。老板有个得力员工A(Callee),他知道老板以前处理过这个项目,员工A知道老板的处理方法(doProject),同时员工A自己也了解该项目的内容(这里需要用内部类实现接口!)。但是老板想提拔自己的员工B(小舅子Caller),员工B和员工A关系也很好,两人在交谈中,A告诉B方案(此处获取引用地址),最后B回调A:
void go(){ callbackReference.doProject(); }

public class CallBacks {
	public static void main(String[] args) {
		Callee c = new Callee();
		//员工B获得了员工A的方案
		Caller caller = new Caller(c.getCallbackReference());//获取引用地址
		caller.go();
		caller.go();
	}
}
//项目
interface Project{
	void doProject();
}
//老板
class Boss{
	public void doProject(){System.out.println("other operation");}
}
//员工A(得力助手)
class Callee extends Boss{
	private int i = 0;
	public void doProject(){
		super.doProject();
		i++;
		System.out.println(i);
	}
	//内部类实现的方案
	private class Inner implements Project{
		public void doProject() {
			Callee.this.doProject();
		}
	}
	//获取回调引用地址
	Project getCallbackReference(){
		return new Inner();
	}
}
//员工B(小舅子)
class Caller{
	private Project callbackReference;
	Caller(Project cb){ callbackReference = cb; }
	void go(){ callbackReference.doProject(); }//此处回调
}

补充说明:例子半取材于Java编程思想,另外回调的价值在于它的灵活性,可以在运行时动态决定需要调用什么方法,有时间再补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值