java 回调函数 的介绍

慢慢深入接触java之后,就会遇到各种深入的编程知识,比如,设计模式,比如今天要说的回调函数。

一直以来都听别人讲,这里写个回调函数,就可以了,一直没明白,到底,啥是个回调函数?

学习别人的代码,看了一上午,现在才终于弄明白,回调,到底个啥。。。

回调专业一点的说就是,传参数的时候,平时一般传普通参数就可以,而此时,你传入的是函数。

按我的理解,所谓java回调函数,就是一个类,自己通过别的类,反回来又调用自己的过程。说简单一点,就是不是直接调用自己的,自己间接调用自己的过程。

java比较特殊,没有指针,只能用接口实现。不像c,c++都有指针,传地址。

先说有关java的回调函数

网上关于,这个回调函数经典的例子,有关通俗的解释,主要有2类:

1.打电话问问题,http://blog.csdn.net/xiaanming/article/details/8703708

2.有关客户端,服务端请求过程的问题。http://blog.chinaunix.net/uid-122937-id-3807995.html

列子,讲的很详细了,非常到位,可是,你需要对比的看,才能注意到里面的细节,不然,还是不会写。


我总结了一下,java回调的整个过程,如下:

必备条件

1.有一个接口Interfere,里面有个方法,是2个类都要操作的方法。

2.有个实现的接口的,实现类A,它干什么了?

a.实现接口要求的方法(废话,等于没说)

b.注册了一个回调函数,就是明确说,类A要用类B里面的有callback参数的函数。(这个过程就注册)

3.有个中间类B,就是通过它,类A自己调用了,自己接口的方法。

a.类B要明确的声明带有callback参数的函数,里面然后回调接口的方法。


以上3点就是,java有关回调函数的总结,也许,你还没明白,里面的内容,没关系,举个例子

比如说,你在电脑前coding代码,满头大汗,你需要擦汗(相当于接口)

1.通常,我们的做法应该是,你停下来,自己拿毛巾擦汗就可以了。(相当于直接调用)。可是,事情的情况,却不是这样的。。。。

因为你太忙,或者太专注,总之,你的手离不开键盘。。。那怎么办?(间接调用

2.那么此时,你需要回调,来完成擦汗(接口)这个过程,这时,你喊了个mm过来,说帮我擦汗(这就是申明回调函数),而且用毛巾擦汗(实现接口)。

3.你相当于类A,现在mm相当于类B,那么mm必须有擦汗的本领(回调实现接口),如果她不会(怎么可能?万一她没手,。。。),而是会说笑话,那就无法实现你的回调,那么你就没法完成擦汗这一动作了,那就悲剧了。。。

所以,看了上面,我想的这个例子,是不是有点明白为什么要有回调函数了?

再说有关js回调函数

这个相对于java就简单了很多,毕竟java和js不是一回事,根本不一样的语言。

function a(callback){  
    alert("我来自父函数a");  
      
    callback();  
  
}  
function b(){  
    alert("我来自子(回调)函数 b");  
  
}  
  
function c(){  
    alert("我来自子(回调)函数 c");  
    }  
      
      
    function test(){  
      
        a(b);  
          
        a(c);  
这是无参数的,规定一个callback参数,里面再调用callback()方法,这就完成了回调。之后,就可以随意网里面加任何其他的方法了。

function e(m,n,Callback){  
    var d = m+n;  
    alert("一个从父函数e 产生的参数将要被传递给回调函数 ,这个参数是:"+d);  
      
    //这里才写你想调用的函数---参数要正确  
    Callback(d);  

}
function callback(data){  
  
        alert("我是回调函数,我的名字叫:callback ,我接收到来自父函数的参数,参数是:"+data);  
  
}  

这个是有参数的,可以得到父函数的参数。


由于js实在是很简单,没神马好说的,看一眼就明白,回调过程,这个和它是单线程,从头往下执行有关的,不像java可以实现多线程。这种问题就不讨论了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值