函數式接口與普通接口的區別


Java是一項面向對象的語言,所有的存在都是對象

比如: 貓可以抽象為一個對象, 狗可以抽象為一個對象, 動物可以抽象為一個更高層級的對象

但貓吃飯這件事, 如果用傳統的Java思想來抽象,那它最應該是貓的一個行為,應該是貓對象中的一個函數/方法.

函數式接口另辟蹊徑, 就是要把行為也抽象為一個對象.

接口聲明:

@FunctionalInterface
public interface IAddService {
String add ();
}

接口使用:

public class App {
public static void main (String[] args) {
User ming = new User();
User hong = new User();
String mr = ming.calc(() -> {
return "ming";
});
System.out.println(mr); // mr: ming
String hr = hong.calc(() -> {
return "hong";
});
System.out.println(hr); // hr: hong
}
}


接口程序走向:

1. 定義了2個人,ming和hong,它們都調用了calc方法,calc方法接收一個函數式接口實例, 調用這個函數對象的add方法,將返回值返回

public String calc(IAddService addService){
return addService.add();
}

2. 當將"()->{}"當參數傳入時, 就相當於將ming的行為封裝為一個IAddService實例傳入了calc方法

3. 函數式接口的效果有點類似於策略設計模式, 只不過不需要創建策略類,也不需要選擇策略

4. 函數式接口的使用有點類似於匿名內部類, 函數邏輯放在參數列表中

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM