Java學習隨筆(函式式介面)
函式式介面(Functional Interface)是Java8引入的一個新特性,是一種特殊的介面:SAM型別介面(Single Abstract Method),但本質上還是介面。
函式式介面就是一個有且僅有一個抽象方法,但是可以有多個非抽象方法的介面。
函式式介面可以被隱式轉換為
Lambda
表示式。
只要介面中出現多個抽象方法,那麼就不能稱之為函式式介面,執行時會編譯錯誤。為此,Java8提供了一個新的註解@FunctionalInterface
,如果介面被這個註解標註,就說明該介面是函式式介面,如果有多於一個抽象方法,在編譯時就會報錯。但是這個註解不是必需的,只要介面符合函式式介面的定義,那麼這個介面就是函式式介面。
一般而言,函式式介面有且只有一個抽象方法,但是在Java8之後,介面也是可以定義方法的:預設方法default
和靜態方法static
,這兩種方法的定義不會影響函式式介面的定義。即:
- 介面中可以有一個或多個靜態方法。
- 在Java8之後,介面可以定義由
default
修飾的預設方法。 - 可以有頂級父類
Object
中public
型別的覆蓋方法。比如覆蓋父類中的:equals
、toString
等方法。 - 函式式介面也支援繼承,可以繼承多個父類介面,但是每個父介面只能有一個抽象方法且必須是相同的抽象方法。
相關文章
- Java函式式介面Java函式
- 詳解Java函式式介面Java函式
- async函式學習筆記。函式筆記
- 生成函式 學習筆記函式筆記
- java8特性-函式式介面Java函式
- Java 函式式介面 lamada 應用Java函式
- C++學習隨筆——C++仿函式的應用方法C++函式
- Golang學習筆記-1.6 函式Golang筆記函式
- JavaScript學習筆記 - 原生函式JavaScript筆記函式
- MYSQL學習筆記14: 函式MySql筆記函式
- python學習筆記(六)——函式Python筆記函式
- TS學習筆記(四):函式筆記函式
- Oracle學習筆記(6)——函式Oracle筆記函式
- 深度學習——loss函式的學習筆記深度學習函式筆記
- Java 8 Function 函式介面JavaFunction函式
- Java @FunctionInterface函式式介面使用說明JavaFunction函式
- 簡析JAVA8函式式介面Java函式
- Java開發筆記(六十二)如何定義函式式介面Java筆記函式
- 函式式介面函式
- MYSQL學習筆記7: 聚合函式MySql筆記函式
- C++學習筆記(二)——函式C++筆記函式
- OpenCV學習筆記(4)——mixChannels函式OpenCV筆記函式
- OpenCV學習筆記(5)——normalize函式OpenCV筆記ORM函式
- Flutter學習筆記(4)--Dart函式Flutter筆記Dart函式
- js純函式學習筆記(一)JS函式筆記
- c語言學習筆記===函式C語言筆記函式
- 函式學習函式
- Java8之Stream-函式式介面Java函式
- 「Java8系列」神奇的函式式介面Java函式
- Java8的新特性--函式式介面Java函式
- java8 新特性之函式式介面Java函式
- MySQL函式學習(一)-----字串函式MySql函式字串
- MYSQL學習筆記15: 數值函式MySql筆記函式
- PHP 第八週函式學習筆記PHP函式筆記
- 學習筆記:javascript中的Generator函式筆記JavaScript函式
- JavaScript學習筆記(七)—— 再說函式JavaScript筆記函式
- 工作學習筆記(三)to_char函式筆記函式
- pandas之常用基本函式學習筆記函式筆記