什麼是函數回調? 介紹 函數回調是一種編程概念,它描述的是這樣一個過程:一個函數(稱為回調函數)作為參數傳遞給另一個函數(稱為調用函數),當滿足一定條件或者在某個特定時刻,調用函數會調用傳遞過來的回調函數。這種機制允許程式員在編寫代碼時,能夠在不同的上下文中重用函數,同時也能實現非同步處理、事件驅動編 ...
什麼是函數回調?
介紹
函數回調是一種編程概念,它描述的是這樣一個過程:一個函數(稱為回調函數)作為參數傳遞給另一個函數(稱為調用函數),當滿足一定條件或者在某個特定時刻,調用函數會調用傳遞過來的回調函數。這種機制允許程式員在編寫代碼時,能夠在不同的上下文中重用函數,同時也能實現非同步處理、事件驅動編程以及模塊間的鬆散耦合
示例
以Java為例,由於Java語言不直接支持函數指針,因此通常通過介面實現回調機制,比如函數式介面Function
// 這是一個回調介面
public interface Function<T, R> {
/**
*
* Applies this function to the given argument.
*
* @param t the function argument
* @return the function result
*/
R apply(T t);
}
public class TestFunctionCallBack {
@Test
public void mainMethod(){
String str1 = test(String::toUpperCase,"hello");
String str2 = test(this::switchCase,"HeLLo");
log.info("str1:{}", str1);
log.info("str2:{}", str2);
}
/**
* 這個方法(調用函數)接收 函數作為參數
* @param function
* @param args
* @return
*/
public static String test(Function<String,String> function,String args){
//調用回調函數的具體方法
return "{"+function.apply(args)+"}";
}
/**
* 大寫轉小寫,小寫轉大寫
*
* @param source 來源
* @return {@link String}
*/
public String switchCase(String source){
char[] charArray = source.toCharArray();
for (int i = 0; i < charArray.length; i++) {
char c = charArray[i];
if (c >= 'a' && c <= 'z') {
c = (char) (c - 32);
}else if (c >= 'A' && c <= 'Z') {
c = (char) (c + 32);
}
charArray[i] = c;
}
return new String(charArray);
}
}
上述代碼中test方法中的參數為一個函數(函數式介面),從本例來看解耦了test和字元串的具體處理邏輯,對於不同的字元串實現只需要傳入不同的函數即可,而不需要去修改test中的代碼,實現了在不同的上下文中重用函數