`
勤业思行
  • 浏览: 83777 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

CallBack原理和实现

    博客分类:
  • j2se
阅读更多

在上一篇文章中讲了Spring的JDBC框架—JdbcTemplate模板类。在JdbcTemplate所实现的接口JdbcOperations中并没有用传统的JDBC API类和方法,而是使用了CallBack参数。在JdbcTemplate中对JdbcOperations的方法进行实现时才真正使用传统JDBC API中的类和方法。这里的CallBack是什么?为什么要用?实现机制又是什么?

一、CallBack是什么?

 CallBack很多时候我们叫"回调",也叫"回叫"。就像打电话时对方不在,但在对方手机上保留了未接来电,等对方看见未接来电时再使用未接来电回叫你。

有了这个例子,可以很好地理解在我们的程序开发过程中了。

在一个应用程序中,其中要对一个数组进行排序。由于排序算法效率的问题,暂时不知道要采用什么排序算法比较合理。此时就可以在原本打算实现排序算法的地方(方法)定义一个CallBack参数,然后调用这个CallBack参数(一般CallBack定义为一个接口,然后调用这个接口的方法)。而在真正调用排序算法时才实例化这个CallBack参数,来决定使用何种排序算法来实现。

二、为什么要用CallBack?

从上面我们可以知道,使用CallBack可以使我们的应用程序更加灵活。

三、CallBack的实现机制?

CallBack一般是在原来打算实现功能的方法中定义为方法的参数,然后调用。而具体CallBack的实现是在真正使用时才实例化CallBack,一般采用匿名内部类来实现实际的功能。

四、实例:以上面的排序为例讲解回调的定义和实现。

1、常规方式实现功能:不用CallBack。

package callback;
public class NoUseCallBackSort {  
	    /**   
	     * 具体排序功能实现的定义  
	     */    
	    public   static   void  sort(int[] a){  
	         //具体的排序功能实现代码    
	        }    
	    /**   
	     * 调用排序功能的方法   
	     */    
	    public   void  exeSort(){   
	       int[] arr =new int[5]{31,5,956,7,89};
		   sort(srr);
	    }   
	     
	    public   static   void  main(String[] args) {   
	        NoUseCallBackSort test=new  NoUseCallBackSort();   
	        test.exeSort(); 
	    }   
	}  

 2、使用CallBack的实现:包含两个Java文件

一个是CallBack接口的定义:

package callback;

public   interface  CallBack {   
    //执行回调操作的方法    
    void  execute();   
} 

 然后就是调用CallBack来实现排序的类文件:

ackage callback;

public   class  UseCallBackSort {   
    
    /**   
     * 实现排序功能,通过定义CallBack接口的execute方法   
     * @param callBack   
     */    
    public   void  sort(int[] a,CallBack callBack) {     
        callBack.execute(); ///进行回调操作      
    }   
       
    public   static   void  main(String[] args) {  
        UseCallBackSort test = new  UseCallBackSort();  int arr[]={3,2,4,6,5 };
        test.sort(arr,new  CallBack(){   
            //定义execute方法    
            public   void  execute(){   
                //这里可以加放一个或多个排序方法    
                NoUseCallBackSort.exeSort();   
            }   
        });   
    }   
       
}    

用匿名内部类来实例化CallBack。

1
0
分享到:
评论

相关推荐

    VC++ CALLBACK

    通过深入理解回调函数的工作原理和使用方式,开发者可以在VC++项目中更加灵活地控制流程,实现更复杂的交互和异步处理。回调函数是C++和许多其他编程语言中一个强大的工具,值得开发者熟练掌握。

    ASP.NET2.0实现无刷新客户端回调的Callback机制

    在ASP.NET 2.0中,引入了一种新的技术,即客户端回调(Client Callback)机制,也称为 Partial Page Rendering 或 UpdatePanel,这使得开发者能够实现无刷新页面更新,提高用户体验。 客户端回调机制的核心是通过...

    Delphi DataSnap CallBack

    **二、DataSnap CallBack原理** DataSnap CallBack机制允许服务器在执行某些操作后主动调用客户端的方法,将结果或事件通知给客户端。这个过程涉及到以下步骤: 1. **客户端注册回调**:客户端在调用服务器方法...

    RMI CallBack

    远程方法调用(Remote Method Invocation,RMI)是Java中的一种机制,允许一个对象在某个JVM上执行另一个JVM...在实现过程中,需要理解并掌握RMI的原理,以及如何设计和实现回调接口及其实现,同时注意安全策略的配置。

    CallBack_DEMO 回调

    在本示例"CallBack_DEMO"中,我们可能正在探讨如何在Java或其他编程语言中实现回调机制。回调通常与异步编程相关,尤其是在处理I/O操作、网络请求或者时间事件时,它能让程序在执行完成后继续执行后续操作,而不是...

    callBackExample

    下面我们将深入探讨回调的工作原理和使用方法: 1. **定义回调接口**:回调通常涉及定义一个接口,该接口包含一个或多个方法,这些方法将在特定事件发生或任务完成后被调用。例如,一个简单的回调接口可能有一个名...

    Rmi callback

    RMI(Remote Method Invocation,远程方法调用)是Java中的一种技术,用于在分布式环境中实现对象间的通信。...理解这个实例有助于开发者深入理解RMI的工作原理和回调机制,对于开发分布式系统具有重要的实践意义。

    深度学习:学习率规划-余弦退火CosineAnnealing和WarmRestart原理及实现 深度学习原理.pdf

    深度学习:学习率规划-余弦退火CosineAnnealing和WarmRestart原理及实现 深度学习中的学习率规划是指在模型训练过程中,适时地调整学习率,以达到更好的模型收敛和泛化能力。其中,余弦退火CosineAnnealing和...

    callback手把手教你写回调函数源代码

    本文将深入探讨回调函数的概念、实现原理,并通过实际的源代码示例,教你如何在Linux环境下编写回调函数及制作库文件。 首先,我们要理解什么是回调函数。回调函数本质上是一个函数指针,它被作为参数传递给另一个...

    基于MAVEN项目的CGLib动态代理原理及实现

    在Java编程领域,动态代理是一种...通过理解其工作原理和使用方式,开发者可以更灵活地实现诸如日志记录、性能监控、事务管理等增强功能。结合实际项目需求,合理运用CGLib,可以极大地提升代码的可维护性和扩展性。

    java CallBack(回调函数)

    Java回调函数,也称为Callback机制,是面向对象编程中一种重要的设计模式,它允许一个对象在其他对象执行特定操作后得到通知或者进行后续处理。在Java中,回调通常通过接口来实现,因为Java不支持函数指针。让我们...

    Promise原理介绍和实现.docx

    总结起来,Promise是JavaScript异步编程的核心,通过理解和掌握Promise的工作原理及其实现,开发者能够更好地组织异步代码,提高代码的可读性和可维护性。在实际开发中,Promise与async/await结合使用,可以进一步...

    callback机制

    #### 二、回调函数的实现原理 在不同的编程语言中,回调函数的实现方式可能会有所不同。例如,在C/C++这类允许直接操作函数指针的语言中,回调函数可以通过直接传递函数指针来实现。而在像Java这样的面向对象语言中...

    callback回调函数

    ### Callback回调函数详解 ...理解和掌握回调函数的工作原理及使用方法对于提高程序设计能力具有重要意义。无论是进行事件处理、异步编程还是多线程编程,合理运用回调函数都能使代码更加简洁高效。

    c#调用C++ 的DLL带有CALLback

    这里实现了回调函数`RD`,它接收一个整数和一个字节数组作为参数,并将相关信息显示在一个消息框中。 ##### 5. 调用DLL函数并传递回调函数 ```csharp private void Form2_Load(object sender, EventArgs e) { ...

    callback.pdf

    ### 回调(Callback):原理与实现 #### 核心概念解析 **回调(Callback)**是一种在程序设计中常见的编程模式,它允许在函数或方法执行完毕后,通过传递一个函数作为参数来调用该函数。这种模式在异步编程、事件...

    电话回拨技术--CallBack

    Callback的核心原理是将主叫方变为被叫方,用户通过短信或特定平台预先登记自己的电话号码并与Callback服务绑定。当用户需要进行长途通话时,只需拨打服务提供商的接入号码,然后挂断。系统会自动回拨用户电话,并在...

    .NET Remoting Callback

    博客链接提到的iteye.com博客文章可能详细解释了.NET Remoting Callback的实现过程,包括代码示例和常见问题。遗憾的是,没有直接访问该链接的能力,但根据常规的.NET Remoting实践,这些步骤应该能够帮助你理解其...

    三次Bezier曲线原理及实现代码

    ### 三次Bezier曲线原理及实现代码 #### 一、Bezier曲线简介 Bezier曲线是一种在计算机图形学中广泛应用的参数曲线,被广泛应用于图形设计、字体渲染以及计算机辅助设计等领域。这种曲线是由法国工程师皮埃尔·...

Global site tag (gtag.js) - Google Analytics