关于JAVA回调方法的一种普遍实现

也许大家在使用JavaScript的时候对回调方法非常熟悉,这种回调的方式使得JS可以非常灵活的处理事件响应和其它的一些有趣的问题!可能你也常常会有这样的疑问,JAVA中能不能使用回调方法呢?

答案是肯定的,也是否定的!由于JAVA不像C一样有显式的指针引用,这就注定了JAVA不能使用一般的回调方法!但是,JAVA提供的强大的接口机制却给我们开发者提供了灵活的处理,可以说,回调在接口面前显得如此的简单!

下面给大家一个小小的例子:

1、首先,我们要创建一个接口,这个接口中定义了要回调的方法。所以你要确定这个方法所需要传入的参数。

/**
 * <pre>
 * 创建一个接口来作为回调函数的传递者
 * </pre>
 * @author Leoly
 * @version 1.0, 2012/3/1
 */
public interface IEventCallBack
{
	/**
	 * <pre>
	 * 需要回调的方法
	 * </pre>
	 * @param sayWhat String
	 */
	void call(String sayWhat);
}

2、让我们来测试回调方法是怎么“回”调的吧。

public class TestCallBack
{
	public void doSomething(IEventCallBack callBack)
	{
		System.out.println("Something is done!");
		callBack.call("Call back method is called!");
	}

	public static void main(String[] args)
	{
		TestCallBack call = new TestCallBack();
		// 使用有回调的方法时,传入接口,并临时实现这个回调方法
		call.doSomething(new IEventCallBack()
		{
			@Override
			public void call(String sayWhat)
			{
				System.out.println(sayWhat);
			}
		});
	}
}


运行完成后,会打印出结果:

Something is done!
Call back method is called!

正是我们想要的!


回头想想,其实JS中的回调和JAVA中的回调还是有一定相似之处的,比如你处理一个点击事件,传入一个function,而这个function是你在fireEvent方法中的参数中声明的,这和在JAVA中传入一个接口,而这个接口相当于一个匿名内部类被传入,这不是很相似吗???


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值