Java接口回调模拟按钮监听

王朝学院·作者佚名  2016-05-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

java接口回调模拟按钮监听做Android开发的时候,经常碰到View的事件监听,虽然一直在用,但从未思考它的实现原理。还有回调函数虽然经常听说,但是总感觉很晕,一想脑袋就开始乱了。所以今天就写点东西来理一下思路。

回调函数

以下是维基百科上的定义:

在计算机程序设计中,回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数),是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。

光看定义可能晦涩难懂,下面还是回到标题,用Java接口回调实现按钮监听。

Java接口回调

我这里的代码基本就仿照Android的按钮监听方式。

首先定义一个接口,里面定义回调函数onClick。

public interface OnClickListener { void onClick(Button b);}

然后我们来实现Button类。

public class Button { PRivate OnClickListener listener; public void setOnClickListener(OnClickListener listener){ this.listener=listener; } public void printSomeThing(String msg){ System.out.println(msg); } public void click() { listener.onClick(this); }}

最后在main函数中调用。

public class CallBackTest { public static void main(String[] args) { Button button=new Button(); button.setOnClickListener(new OnClickListener() { @Override public void onClick(Button b) { b.printSomeThing("按钮被点击"); } }); System.out.println("开始模拟点击"); System.out.println("真正的点击应该由系统来调用"); button.click(); }}

大概过程就是button.click()调用回调函数OnClickListener.onClick,但是这个onClick的实现是在button.setOnClickListener里面的匿名内部类实现的。语言还是表达不太清楚,所以还是多看代码吧。

JS中的回调函数

顺便提一下JS中的回调函数吧。因为JS的函数也是对象,可以直接作为参数传递,所以实现起来很简单。

//模拟服务器返回数据 var getInfo=function(id,callback){ var result="<div>Something get By"+id+"</div>"; setTimeout(function(){ callback(result); },1000);//定时1秒返回数据 }; //调用 getInfo(id,function(result){ //对返回的result进行处理 });

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航