Java8新特性:函數式接口@FunctionalInterface使用說明

咱們經常使用的一些接口Callable,Runnable,Comparator等在JDK8中都添加了@FunctionalInterface 註解:java

經過JDK8 源碼javadoc,能夠知道@FunctionalInterface有如下特色:git

1.該註解只能標記在"有且僅有一個抽象方法"的接口上,表示函數式接口。
2.JDK8接口中的靜態方法和默認方法,都不算是抽象方法。
3.接口默認繼承 java.lang.Object,因此若是接口顯示聲明覆蓋了Object中的方法,那麼也不算抽象方法。
4.該註解不是必須的,若是一個接口符合"函數式編程"定義,那麼加不加該註解都沒有影響。加上該註解可以 更好地讓編譯器進行檢查,若是編寫的不是函數式接口,可是加上了@FunctionalInterface 那麼編譯器會報錯。github

下面接口能夠單作一函數式接口:編程

package com.simple.java8features;

/**
 * Created with IntelliJ IDEA.
 *
 * @author: zhubo
 * @description:
 * @time: 2018年08月05日
 * @modifytime:
 */
@FunctionalInterface
public interface AnnoInterface {
    // 抽象方法
    public void method();
    // java.lang.Object中的方法不是抽象方法
    public boolean equals(Object obj);
    // default不是抽象方法
    public default void defaultMethod() {

    }
    // static 不是抽象方法
    public static void staticMethod() {

    }
}

GitHub函數式編程

相關文章
相關標籤/搜索