本文的主要內容是同過實際程式碼向大家展示Java程式設計中介面回呼的一般用法,具有一定參考價值,需要的朋友可以了解下
介面回呼是指:可以把使用某一介面的類別所建立的物件的引用賦給該介面宣告的介面變量,那麼該介面變數就可以呼叫被類別實作的介面的方法。實際上,當介面變數呼叫被類別實作的介面中的方法時,就是通知對應的物件呼叫介面的方法,這個過程稱為物件功能的介面回呼。
Java介面回呼一般用法:實作介面實際上和繼承抽象類別類似,只不過繼承是在類別的層面上操作,介面是在方法和常數集合的層面上操作,介面比抽象類別更抽象、更簡潔。可以把實作介面看成繼承特定的一個或多個方法以及一些常數,關於介面的具體規則這裡不贅述。
為什麼要使用介面和抽象類別?因為從很多角度講,這樣做符合物件導向的設計思想,例如開閉原則等。
從實際開發的角度講,Java不支援多重繼承,為了彌補這一點,介面的存在就極為重要,和繼承不同,一個類別可以實作多個介面。
介面的一大作用是實現回調,回調分同步回調和非同步回調,區別是異步回調使用了多執行緒技術,當回調中有耗時操作時,就需要使用非同步回調。
以下全部以非同步回呼為例。以下以java寫法為例,android同理。
1、一般用法
新入口類別Main,並新建介面InterfaceExample
public class Main implements InterfaceExample{ public static void main(String[] args) { System.out.println("------接口使用测试--------"); InterfaceTest test = new InterfaceTest(); //调用InterfaceTest的handleThings方法,并传递Main的实例 test.handleThings(new Main()); System.out.println("------异步回调测试--------"); } @Override //重写接口方法 public void sendMessage(String string) { System.out.println("接口回调成功,利用 " + string + " 做一些事"); } } //接口也可以写在一个独立的.java文件里 interface InterfaceExample { void sendMessage(String string); }
下面新啟動回呼的類別InterfaceTest
public class InterfaceTest { //注意这里Main实例向上转型,接口变量引用了Main实例 public void handleThings(InterfaceExample example) { new Thread(new Runnable() { @Override public void run() { System.out.println("-----做一些事------"); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } //回调接口方法 example.sendMessage("接口传的参数"); } }).start(); } }
最後運作輸出:
------接口使用测试-------- ------异步回调测试-------- -----做一些事------ 接口回调成功,利用 接口传的参数 做一些事
其中異步的處理也可以在Main呼叫handleThings時進行。
2、結合匿名內部類別實作介面回呼
第二種方法只需要在第一種的基礎上修改Main類別就可以
public class Main { public static void main(String[] args) { System.out.println("------接口使用测试--------"); InterfaceTest test = new InterfaceTest(); //调用InterfaceTest的handleThings方法,并使用实现了InterfaceExample接口的匿名内部类 //在该匿名内部类中重写接口方法 test.handleThings(new InterfaceExample() { @Override //重写接口方法 public void sendMessage(String string) { System.out.println("接口回调成功,利用 " + string + " 做一些事"); } }); System.out.println("------异步回调测试--------"); } } interface InterfaceExample { void sendMessage(String string); }
可以看到,採用匿名內部類別的方式可以簡化程式碼,讓程式結構更清晰。所以這種用法很常見,例如android系統提供的view的點擊事件就是採用這種形式進行回調。
輸出是一樣的:
------接口使用测试-------- ------异步回调测试-------- -----做一些事------ 接口回调成功,利用 接口传的参数 做一些事。
以上是Java實作介面回呼叫法的範例解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

記事本++7.3.1
好用且免費的程式碼編輯器

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版