3分钟理解完java中的回调函数
生活随笔
收集整理的這篇文章主要介紹了
3分钟理解完java中的回调函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
定義
?????????函數A執行時需要先給它傳遞函數B, 好在合適的時候調用, 以完成函數A. 這個被傳入的函數B被稱為回調函數(Callback function).
如何理解
????????在調用庫中某些預先備好的目標函數時, 需要先給該函數傳遞另一個函數, 讓庫中的目標函數在合適的時候, 去調用傳給它函數來完成目標函數.
打個比方
????????假如你去一家餐廳吃飯, 你告訴服務員說你要吃飯, 然后她會讓你對著菜單點菜, 你點完菜后她就會陸續地將才給你上來.?
????????你要吃飯的行為就相當于庫中的目標函數(通常稱之為中間函數), 但進行這個行為前, 你需要告訴服務員你要點什么, ?點什么菜是由你決定的, 點菜的這個行為也就是回調函數.
與函數間調用不同的是:?
????????中間函數在接收一個回調函數前是不完整的;
????????通過實回調函數實現的不同,可以改變中間函數的行為, 所以它非常靈活
如何使用回調函數
1. 首先定義一個回調函數的接口, 方便回調函數能根據業務的不同,實現不同的實例.
/*** @author Huzz* @created 2021-11-11 13:40*/ public interface CallbackInterface {/*** 回調函數* @param param* @return*/boolean process(String param);}?2.? 定義中間函數, 并在中間函數中調用回調函數. 中間函數時你直接使用的函數, 你只是在該函數中調用了你定義的回調函數, 它和普通函數沒有什么區別.
/*** @author Huzz* @created 2021-11-11 13:38*/ @Data public class Huzz {/*** 中間函數* @param callbackInterface 回調函數*/public String execute(CallbackInterface callbackInterface){System.out.println("before: 中間函數的內容");boolean result = callbackInterface.process("TEST");System.out.println("after: 中間函數的內容");return result ? "相同": "不相等";}}3. 使用回調函數.
public static void main(String[] args) {/*** 這是我們要使用的對象.* 此刻我們需要在這個對象中調用一個函數去做一些事情(這個函數比較特殊, 被叫做中間函數).* 于是我們先實例化這個對象*/Huzz huzz = new Huzz();/*** 調用中間函數: execute()* 執行中間函數的時候需要先給它傳遞一個函數作為參數,這個函數叫做回調函數: process()* 回調函數寫法:* // 拉姆達表達式* param -> {}* 或* // 通常寫法* new CallbackInterface() {* @Override* public Boolean process(Object param) {* return null;* }* }**/String result = huzz.execute(param -> {System.out.println("RUN");if ("TEST".equals(param)) {return true;}return false;/*** 可以看到中間函數execute()執行過程中,調用執行了回調函數process()* 看似類似普通函數中的簡單調用, 但回調函數卻有著很大的靈活性,* 如下 再調用中間函數實現一些不同的行為試試**/});/*** 回調函數實現不同的行為*/huzz.execute(new CallbackInterface() {@Overridepublic boolean process(String param) {if (param.length() == 4) {return true;}return false;}});}總結
以上是生活随笔為你收集整理的3分钟理解完java中的回调函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mfs使用指引
- 下一篇: JavaScript调用WebServi