java介面回撥
一:回撥的用途
回撥一般用於層間協作,上層將本層函式安裝在下層,這個函式就是回撥,而下層在一定條件下觸發回撥。例如作為一個驅動,是一個底層,他在收到一個資料時,除了完成本層的處理工作外,還將進行回撥,將這個資料交給上層應用層來做進一步處理,這在分層的資料通訊中很普遍。
所謂的回撥,就是程式設計師A寫了一段程式(程式a),其中預留有回撥函式介面,並封裝好了該程式。程式設計師B要讓a呼叫自己的程式b中的一個方法,於是,他透過a中的介面回撥自己b中的方法。
二:JAVA實現介面回撥
1.回撥介面
2.介面引用
3.介面回撥類
4.測試類
三:Spring JdbcTemplate中的回撥例項
對於spring的JdbcTemplate進行結果集查詢操作,spring給我們開發的是一系列的query方法,這些查詢的方法中回撥的介面主有三種:ResultSetExtractor,RowCallbackHandler,RowMapper,這個內容有圖有真相:
1. ResultSetExtractor
2.RowCallbackHandler
3.RowMapper
四:Android中的介面回撥
OnClickListener就是android系統所約好的介面,然後在我們寫的應用程式中傳入回撥物件,這樣就可以達到介面統一,實現不同的效果。
回撥一般用於層間協作,上層將本層函式安裝在下層,這個函式就是回撥,而下層在一定條件下觸發回撥。例如作為一個驅動,是一個底層,他在收到一個資料時,除了完成本層的處理工作外,還將進行回撥,將這個資料交給上層應用層來做進一步處理,這在分層的資料通訊中很普遍。
所謂的回撥,就是程式設計師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();
-
}
-
- }
點選(此處)摺疊或開啟
-
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,這個內容有圖有真相:
1. ResultSetExtractor
點選(此處)摺疊或開啟
-
public interface ResultSetExtractor {
-
Object extractData(ResultSet rs) throws SQLException,
-
DataAccessException;
- }
點選(此處)摺疊或開啟
-
List<User> userList = (List<User>)jdbcDao.getJdbcTemplate().
-
query("select * from T_USER", new ResultSetExtractor() {
-
@Override
-
public Object extractData(ResultSet rs) throws SQLException,
-
DataAccessException {
-
List<User> userList = new ArrayList<User>();
-
while (rs.next()) {
-
User user = new User();
-
user.setId(rs.getInt("N_ID"));
-
user.setName(rs.getString("C_NAME"));
-
userList.add(user);
-
}
-
return userList;
-
}
- });
點選(此處)摺疊或開啟
-
public interface RowCallbackHandler {
-
void processRow(ResultSet rs) throws SQLException;
-
- }
點選(此處)摺疊或開啟
-
final List<User> userList = new ArrayList<User>();
-
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);
-
}
- });
點選(此處)摺疊或開啟
-
public interface RowMapper {
-
Object mapRow(ResultSet rs, int rowNum) throws SQLException;
- }
點選(此處)摺疊或開啟
-
List<User> userList = (List<User>)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)
-
{
-
-
}
- });
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2129241/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java 介面回撥經典案例--網路請求回撥Java
- Java介面回撥機制詳解Java
- 微博回撥介面
- 介面返回前回撥
- Java_介面回撥與匿名內部類Java
- AndroidAdapter回撥介面AndroidAPT
- Java——回撥機制Java
- jni回撥java方法Java
- Java--回撥模型Java模型
- java回撥函式Java函式
- java回撥函式-非同步回撥-簡明講解Java函式非同步
- java 回撥函式示例Java函式
- java回撥函式機制Java函式
- Java回撥機制解讀Java
- Java回撥函式的理解Java函式
- java閉包和回撥淺析Java
- Java 回撥機制(CallBack) 趣解Java
- 回撥函式透徹理解Java函式Java
- 深入淺出Java回撥機制Java
- 用 Java 實現回撥例程 (轉)Java
- 統一管理專案中的介面回撥
- [JS]回撥函式和回撥地獄JS函式
- 【JavaSE】java實現閉包與回撥Java
- Java中的閉包(Closure)和回撥Java
- 介面回撥的原理:介面變數 呼叫 被類實現的介面的方法變數
- Activity生命週期回撥是如何被回撥的?
- java高階用法之:JNA中的回撥Java
- 深入淺出: Java回撥機制(非同步)Java非同步
- Java 非同步回撥機制例項解析Java非同步
- 在Java中實現回撥過程 (轉)Java
- 回撥函式函式
- 非同步/回撥非同步
- JS 回撥模式JS模式
- C++回撥C++
- js 回撥 callbackJS
- 一個Demo帶你理解Android介面回撥機制Android
- 用匿名內部類實現 Java 同步回撥Java
- 【詳細、開箱即用】.NET企業微信回撥配置(資料回撥URL和指令回撥URL驗證)