Java SE之旅_10_回调函数
来源:互联网 发布:免煎中药淘宝 编辑:程序博客网 时间:2024/06/03 04:43
使用apache的开源工具dbutils时, 我们可以用QueryRunner很方便地进行数据库查询操作,将查到的数据封装到JavaBean对象中, 或是封装到存储多个JavaBean对象的集合框架中. 其中用到的一个重要接口是ResultHandler, 该接口是如何实现对JavaBean对象的封装的呢? 其原理其实是利用回调函数来完成的.
下面通过一个小例子展示一下如何使用回调函数.
1. 首先定义接口(该接口使用了泛型):
/** * 定义回调规范 */interface IHandler<T>{ T sayHi(String sql);}
2. 再定义调用类, 其query方法接收一个实现了IHandler接口的对象, 在query方法体内调用IHandler的sayHi方法:
/** * 定义调用类 */class MyRunner {public <T>T query(String sql,IHandler<T> h){return h.sayHi(sql);}}
3, 测试如何使用回调函数:
public class CallBackMethodDemo {/** * 回调函数例子 */public static void main(String[] args) {MyRunner run = new MyRunner(); List<Map<String, Object>> list = run.query("yueyayun...",new IHandler<List<Map<String,Object>>>(){@Overridepublic List<Map<String, Object>> sayHi(String sql) {Map<String,Object> map = new HashMap<String, Object>();map.put(sql, map);List<Map<String,Object>> ll = new LinkedList<Map<String,Object>>();ll.add(map);ll.add(new HashMap<String, Object>());return ll;}});System.out.println(list);}}
从以上代码可以看到, 我们可以写多个实现了IHandler接口的具体类来完成各种的丰富功能, 在调用run.query方法时指定一个完成某项功能的IHandler接口实现类, 达到完成类似ResultHandler的效果.
建议有兴趣的同学看看apache的dbutils工具的源码, 它将有助于你深刻理解回调函数.
0 0
- Java SE之旅_10_回调函数
- 【Java SE】回调函数:层间的协作
- java之回调函数
- java之回调函数
- java之回调函数
- Java 之 回调函数实例说明
- Java回调函数之callback接口
- 回调函数之Java/C++版本
- Java回调函数之callback接口
- JAVA回调函数
- java回调函数
- Java回调函数
- Java 回调函数
- java回调函数
- Java 回调函数
- Java 回调函数
- Java回调函数
- Java回调函数
- OpenCV之随机类RNG
- 对apache.commons.beanutils.BeanUtils的源码解读
- 通讯系统经验谈【一】TCP连接状态分析:SYNC_RECV,CLOSE_WAIT,TIME_WAIT
- 《剑指offer》读书笔记(第1章)
- linux杂谈(二):简单分区与文件系统
- Java SE之旅_10_回调函数
- PHP5.3, PHP5.4, PHP5.5新特性
- poj1061_扩展欧几里得_求线性同余方程
- 奥巴马称日美安保条约适用范围包括钓鱼岛
- 通讯系统经验谈【二】解读内核参数 - socket/文件句柄资源限制参数
- 解决win 7的 VPN域名解析DNS优先级
- 设计模式——组合模式
- linux杂谈(三):自动安装脚本kickstart
- jdbc连接数据库