Java的函數(shù)式接口@FunctionalInterface的使用說明
Java的函數(shù)式接口@FunctionalInterface
我們常用的一些接口Callable、Runnable、Comparator等在JDK8中都添加了@FunctionalInterface注解。
通過JDK8源碼javadoc,可以知道這個注解有以下特點:
1、該注解只能標記在"有且僅有一個抽象方法"的接口上。
2、JDK8接口中的靜態(tài)方法和默認方法,都不算是抽象方法。
3、接口默認繼承java.lang.Object,所以如果接口顯示聲明覆蓋了Object中方法,那么也不算抽象方法。
4、該注解不是必須的,如果一個接口符合"函數(shù)式接口"定義,那么加不加該注解都沒有影響。加上該注解能夠更好地讓編譯器進行檢查。如果編寫的不是函數(shù)式接口,但是加上了@FunctionInterface,那么編譯器會報錯。
@FunctionalInterface標記在接口上,“函數(shù)式接口”是指僅僅只包含一個抽象方法的接口。
如果一個接口中包含不止一個抽象方法,那么不能使用@FunctionalInterface,編譯會報錯。
比如下面這個接口就是一個正確的函數(shù)式接口:
// 正確的函數(shù)式接口 @FunctionalInterface public interface TestInterface { // 抽象方法 public void sub(); // java.lang.Object中的方法不是抽象方法 public boolean equals(Object var1); // default不是抽象方法 public default void defaultMethod(){ } // static不是抽象方法 public static void staticMethod(){ } }
到此這篇關于Java的函數(shù)式接口@FunctionalInterface的使用說明的文章就介紹到這了,更多相關@FunctionalInterface函數(shù)式接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot實現(xiàn)動態(tài)增刪啟停定時任務的方式
在spring?boot中,可以通過@EnableScheduling注解和@Scheduled注解實現(xiàn)定時任務,也可以通過SchedulingConfigurer接口來實現(xiàn)定時任務,但是這兩種方式不能動態(tài)添加、刪除、啟動、停止任務,本文給大家介紹SpringBoot實現(xiàn)動態(tài)增刪啟停定時任務的方式,感興趣的朋友一起看看吧2024-03-03Java的@Transactional、@Aysnc、事務同步問題詳解
這篇文章主要介紹了Java的@Transactional、@Aysnc、事務同步問題詳解,現(xiàn)在我們需要在一個業(yè)務方法中插入一個用戶,這個業(yè)務方法我們需要加上事務,然后插入用戶后,我們要異步的方式打印出數(shù)據(jù)庫中所有存在的用戶,需要的朋友可以參考下2023-11-11