Java中的回调函数

本例拿apache commons dbutils举例

回调函数:

回调是指在执行时,具体的封装处理工用由第三方的类来实现。

回调一般由两部分组成

1:调用类 - QueryRunner。实例类

2:回调规范 – ResultSetHandler。一般是一个接口。

3:回调规范定义回调方法且这个方法由调用类调用。

在实现了了这些实现类的时候,为什么就那么智能的返回我们想要到结果呢?

第一个例子:

package com.tpf.callback;

import java.util.List;
import java.util.Map;
/**
 * 这个是一个动态返回类型的 回调
 * <p>Title:CallbackDemo </p>
 * <p>Description: </p>
 * <p>Company: www.vfinance.cn </p>
 * @author tianpengfei
 * @date 2016年8月10日 下午1:55:52
 */
public class CallbackDemo {
    
    public static void main(String[] args) {
        //使用
        Runner run = new Runner();
        run.query("pengfei", new RunnerHandler<List<Map<String,Object>>>() {

            @Override
            public List<Map<String, Object>> handler(String sql) {
                return "hello world";
            }
        });
    }
}

/**
 * 第一步:定义调用类
 */
class Runner{
    public <T>T query(String sql,RunnerHandler<T> rh){
        return rh.handler(sql);
    }
}

/**
* 第二步:定义回调规范
 * @param <T>
*/
interface RunnerHandler<T>{
    T handler(String sql);
}

 

posted @ 2016-08-10 16:01  半夜起来敲代码  阅读(207)  评论(0编辑  收藏  举报