@FunctionalInterface註解的使用

被@FunctionalInterface註解標記的類型代表這是一個函數接口。從概念上講,函數接口只有一個抽象方法。若是接口聲明的抽象方法覆寫Object類的公共方法,那這方法不算做接口的抽象方法,由於接口具備Object方法的默認實現。html

先看Java SE 8中@FunctionalInterface註解是如何聲明的:java

package java.lang;

import java.lang.annotation.*;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface FunctionalInterface {}

由Java源代碼聲明咱們瞭解到:@FunctionalInterface註解,只能用於類。其實,它的應用範圍更小,只能應用於接口類型。spring

咱們可使用lambda表達式,方法引用或構造函數引用建立功能接口的實例。函數

若是一個類型被此標記的話,若是不是如下狀況,編譯器會報錯:spa

  1. 此類型是接口類型而且不是註解類型、枚舉或類
  2. 標記的類型知足函數接口的要求

可是,不管接口聲明中是否標記了@FunctionalInterface註解,編譯器都會將知足函數接口定義的任何接口視爲函數接口。code

像個人「函數接口(Functional Interfaces)」這篇博文中聲明的函數接口,均可以使用此註解進行顯式標記,告訴用戶此接口是函數接口。htm

下節繼續

    下節將給你們講解最後一個Java SE預約義註解@Deprecated的使用blog

相關文章
相關標籤/搜索