当前位置:文章中心 >> Java_Jsp_Jdk_eclipse_tomcat
                             | 
                         
                     
                    
                        
                            
                                
                                    
                                        | 
                                               什么是回调函数
                                         | 
                                     
                                    
                                        | 
                                            夜鹰教程网 来源:www.yyjcw.com 日期:2016-11-15 8:57:09
                                         | 
                                     
                                 
                                
                                
                                    
                                        | 
                                              
 这篇文章不能解决你的问题?我们还有相关视频教程云课堂 全套前端开发工程师培训课程 微信号:yyjcw10000 QQ:1416759661  远程协助需要加QQ! 业务范围:视频教程|程序开发|在线解答|Demo制作|远程调试| 点击查看相关的视频教程。 技术范围:全端开发/前端开发/webapp/web服务/接口开发/单片机/C#/java/node/sql server/mysql/mongodb/android/。  
 
 
  
                                         | 
                                     
                                 
                                
                                    
                                        
                                            刚开始学习android,经常看到回调函数这个字眼,由于java学的不是太好,所以找了些资料,自己有些理解了,就拿出来和大家分享下。 
所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R称为注册函数。Web Service以及Java的RMI都用到回调机制,可以访问远程服务器程序。(这段是网上抄的,摘自http://hi.baidu.com/f117_n/blog/item/2f52e612347cd3c8c3fd78ad.html) 
重新举个例子来理解回调: 
  我遇到了一个问题,便用家里的固话打给我的同事,他说不太清楚,稍后给我回复。我说我一会要出去,你想到了之后打我手机吧。没过多久,我同事就打手机过来告诉了我答案。 
下面是代码: 
1.先定义一个接口,规定回答问题的条件是打我手机 
public interface CallBack {     
    //通过手机回答 
    void CallIphone(); 
} 
2.调用者(我): 
public class Me {    
    public void askQuestion(){ 
        System.out.println("拨打固话问1+1=?"); 
    } 
     
} 
3.被调用者(同事): 
public class You { 
    public void answer(CallBack callBack){ 
        //进行回调 
        callBack.CallIphone(); 
    }    
    public static void main(String[] args) throws InterruptedException { 
        new Me().askQuestion(); 
        Thread.sleep(3000); 
        new You().answer(new CallBack() { 
            //实现接口,即回答问题的方式 
            public void CallIphone() { 
                System.out.println("拨打手机回答等于2");                 
            } 
        }); 
    } 
} 
4.显示结果 
  拨打固话问1+1=? 
  拨打手机回答等于2
                                         | 
                                     
                                 
                                
                                
                                
                                
                             | 
                            
                                
                                
                                    
                                        
                                               热门服务/教程目录
                                         | 
                                     
                                    
                                        
                                             
                                            
                                            
                                                 客服电话:153 9760 0032
                                                购买教程QQ:1416759661  
                                            
                                         | 
                                     
                                 
                                
                                
                                
                                
                             | 
                         
                     
                 |