日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

调用API的SDK相关知识:实现回调函数.

發布時間:2025/6/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 调用API的SDK相关知识:实现回调函数. 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

熟悉MS-Windows和X Windows事件驅動設計模式的開發人員,通常是把一個方法的指針傳遞給事件源,當某一事件發生時來調用這個方法(也稱為“回調”)。Java的面向對象的模型目前不支持方法指針,似乎不能使用這種方便的機制。

Java支持interface,通過interface可以實現相同的回調。其訣竅就在于定義一個簡單的interface,申明一個被希望回調的方法。


例如,假定當某一事件發生時會得到通知,我們可以定義一個interface:
public interface InterestingEvent {
??? // 這只是一個普通的方法,可以接收參數、也可以返回值
??? public void interestingEvent();
}

這樣我們就有了任何一個實現了這個接口類對象的手柄grip。

當一事件發生時,需要通知實現InterestingEvent?接口的對象,并調用interestingEvent()?方法。
class EventNotifier {
??? private InterestingEvent ie;
??? private boolean somethingHappened;

??? public EventNotifier(InterestingEvent event) {
??? ??? ie = event;
??? ??? somethingHappened = false;
??? }

??? public void doWork() {
??? ??? if (somethingHappened) {
??? ??? ??? // 事件發生時,通過調用接口的這個方法來通知
??? ??? ??? ie.interestingEvent();
??? ??? }??? ????
??? }
}

在這個例子中,用somethingHappened?來標志事件是否發生。

希望接收事件通知的類必須要實現InterestingEvent?接口,而且要把自己的引用傳遞給事件的通知者。
public class CallMe implements InterestingEvent {
??? private EventNotifier en;

??? public CallMe() {
??? ??? // 新建一個事件通知者對象,并把自己傳遞給它
??? ??? en = new EventNotifier(this);
??? }

??? // 實現事件發生時,實際處理事件的方法
??? public void interestingEvent() {
??? ??? // 這個事件發生了,進行處理
??? }
}

以上是通過一個非常簡單的例子來說明Java中的回調的實現。

當然,也可以在事件管理或事件通知者類中,通過注冊的方式來注冊多個對此事件感興趣的對象。

1. 定義一個接口InterestingEvent?,回調方法nterestingEvent(String event)?簡單接收一個String?參數。

interface InterestingEvent {
??? public void interestingEvent(String event);
}

?

2. 實現InterestingEvent接口,事件處理類

class CallMe implements InterestingEvent {
??? private String name;
??? public CallMe(String name){
??? ??? this.name = name;
??? }????
??? public void interestingEvent(String event) {
??? ??? System.out.println(name + ":[" +event? + "] happened");
??? }
}

?

3. 事件管理者,或事件通知者

class EventNotifier {
??? private List<CallMe> callMes = new ArrayList<CallMe>();
????
??? public void regist(CallMe callMe){
??? ??? callMes.add(callMe);
??? }
????
??? public void doWork(){
??? ??? for(CallMe callMe: callMes) {
??? ??? ??? callMe.interestingEvent("sample event");
??? ??? }
??? }????
}

?

4. 測試

public class CallMeTest {
??? public static void main(String[] args) {
??? ??? EventNotifier ren = new EventNotifier();
??? ??? CallMe a = new CallMe("CallMe A");
??? ??? CallMe b = new CallMe("CallMe B");

??? ??? // regiest
??? ??? ren.regist(a);
??? ??? ren.regist(b);
??? ????
??? ??? // test
??? ??? ren.doWork();??? ????
??? }
}

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的调用API的SDK相关知识:实现回调函数.的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。