@FunctionalInterface注解的使用


被@FunctionalInterface注解標記的類型表明這是一個函數接口。從概念上講,函數接口只有一個抽象方法。如果接口聲明的抽象方法覆寫Object類的公共方法,那這方法不算作接口的抽象方法,因為接口具有Object方法的默認實現。

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

package java.lang;

import java.lang.annotation.*;

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

由Java源代碼聲明我們了解到:@FunctionalInterface注解,只能用於類。其實,它的應用范圍更小,只能應用於接口類型。

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

如果一個類型被此標記的話,如果不是以下情況,編譯器會報錯:

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

但是,無論接口聲明中是否標記了@FunctionalInterface注解,編譯器都會將滿足函數接口定義的任何接口視為函數接口。

像我的“函數接口(Functional Interfaces)”這篇博文中聲明的函數接口,都可以使用此注解進行顯式標記,告訴用戶此接口是函數接口。

下節繼續

    下節將給大家講解最后一個Java SE預定義注解@Deprecated的使用

 

 

 


免責聲明!

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



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