Java @FunctionalInterface註解-6

在學習 Lambda 表達式時,我們提到如果接口中只有一個抽象方法(可以包含多個默認方法或多個 static 方法),那麼該接口就是函數式接口。@FunctionalInterface 就是用來指定某個接口必須是函數式接口,所以 @FunInterface 只能修飾接口,不能修飾其它程序元素。


函數式接口就是為 Java 8 的 Lambda 表達式準備的,Java 8 允許使用 Lambda 表達式創建函數式接口的實例,因此 Java 8 專門增加了 @FunctionalInterface。

例如,如下程序使用 @FunctionalInterface 修飾了函數式接口。

<code>@FunctionalInterfacepublic 

interface

FunInterface

{

static

void

print

(

) { System.

out

.println(

"C語言中文網"

); }

default

void

show

(

) { System.

out

.println(

"我正在學習C語言中文網Java教程"

); }

void

test

(

); /<code>

編譯上面程序,可能絲毫看不出程序中的 @FunctionalInterface 有何作用,因為 @FunctionalInterface 註解的作用只是告訴編譯器檢查這個接口,保證該接口只能包含一個抽象方法,否則就會編譯出錯。


@FunctionalInterface 註解主要是幫助程序員避免一些低級錯誤,例如,在上面的 FunInterface 接口中再增加一個抽象方法 abc(),編譯程序時將出現如下錯誤提示:

“@FunctionInterface”批註無效;FunInterface不是functional接口


分享到:


相關文章: