java 接口回调封装_JAVA接口回调

一:回调的用途

回调一般用于层间协作,上层将本层函数安装在下层,这个函数就是回调,而下层在一定条件下触发回调。例如作为一个驱动,是一个底层,他在收到一个数据时,除了完成本层的处理工作外,还将进行回调,将这个数据交给上层应用层来做进一步处理,这在分层的数据通信中很普遍。

所谓的回调,就是程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。

二:JAVA实现接口回调

1.回调接口

点击(此处)折叠或打开

public interface CallbackInterface {

public void callbackMethod();

}

2.接口引用

点击(此处)折叠或打开

public class Caller {

public CallbackInterface callback;

/**

* @param callback

* the callback to set

*/

public void setCallback(CallbackInterface callback) {

this.callback = callback;

}

public void call() {

this.callback.callbackMethod();

}

}

3.接口回调类

点击(此处)折叠或打开

public class Client implements CallbackInterface{

/* (non-Javadoc)

* @see com.enjoylink.gmap.mongodb.demo.CallbackInterface#callbackMethod()

*/

@Override

public void callbackMethod() {

System.out.println("this is the client callbackMethod.");

}

}

4.测试类

点击(此处)折叠或打开

public class CallbackTest {

public static void main(String[] args) {

Caller caller = new Caller();

// Client client = new Client();

// caller.setCallback(client);

caller.setCallback(new CallbackInterface() {

@Override

public void callbackMethod() {

System.out.println("匿名类回调");

}

});

caller.call();

}

}

三:Spring JdbcTemplate中的回调实例

对于spring的JdbcTemplate进行结果集查询操作,spring给我们开发的是一系列的query方法,这些查询的方法中回调的接口主有三种:ResultSetExtractor,RowCallbackHandler,RowMapper,这个内容有图有真相:

2bd1ecc5aac4302b9aa55b3ce7faf4b8.png

1.ResultSetExtractor

点击(此处)折叠或打开

public interface ResultSetExtractor {

Object extractData(ResultSet rs) throws SQLException,

DataAccessException;

}

点击(此处)折叠或打开

List userList = (List)jdbcDao.getJdbcTemplate().

query("select * from T_USER", new ResultSetExtractor() {

@Override

public Object extractData(ResultSet rs) throws SQLException,

DataAccessException {

List userList = new ArrayList();

while (rs.next()) {

User user = new User();

user.setId(rs.getInt("N_ID"));

user.setName(rs.getString("C_NAME"));

userList.add(user);

}

return userList;

}

});

2.RowCallbackHandler

点击(此处)折叠或打开

public interface RowCallbackHandler {

void processRow(ResultSet rs) throws SQLException;

}

点击(此处)折叠或打开

final List userList = new ArrayList();

jdbcDao.getJdbcTemplate().query("select * from T_USER",

new RowCallbackHandler(){

@Override

public void processRow(ResultSet rs) throws SQLException {

User user = new User();

user.setId(rs.getInt("N_ID"));

user.setName(rs.getString("C_NAME"));

userList.add(user);

}

});

3.RowMapper

点击(此处)折叠或打开

public interface RowMapper {

Object mapRow(ResultSet rs, int rowNum) throws SQLException;

}

点击(此处)折叠或打开

List userList = (List)jdbcDao.getJdbcTemplate().

query("select * from T_USER", new RowMapper(){

@Override

public Object mapRow(ResultSet rs, int rowNumber)

throws SQLException {

User user = new User();

user.setId(rs.getInt("N_ID"));

user.setName(rs.getString("C_NAME"));

return user;

}

});

四:Android中的接口回调

在android中回调机制被大量的使用。比如,在Activity中定义了很多生命周期的不同状态要调用的方法,这些方法都是空实现,系统框架要调用,用户也要调用来实现。

举个简单的例子就是Button的点击响应事件实现机制

点击(此处)折叠或打开

button.setOnClickListener(new OnClickListener()

{

@Override

public void onClick(View v)

{

}

});

OnClickListener就是android系统所约好的接口,然后在我们写的应用程序中传入回调对象,这样就可以达到接口统一,实现不同的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值