什麼是函式介面呢? 簡而言之就是 interface 中, 只定義了一個可被 implement 的抽象 method
Java 內建的函式介面有很多,像是 java.lang.Runnable, java.util.concurrent.Callable, java.util.Comparator,這些 interface 的共同點就是只定義了一個抽象 method, 因為只定義了一個抽象 method, 當在程式中使用 lamdba expression 時, 編譯器自然知道是 implement interface 中的哪個 method
Java8 新增了一個 annotation : @FunctionalInterface, 如果在一個不是 functional interface 的 interface 用這個 annotation, compiler 就會顯示警告,使用方法如下
@FunctionalInterface public interface TestFunctionalInterface { void test1(); }若加入 void test2(); 則會發生錯誤
Java 8 的 API 文件上說明了建立 functional interface 的原則 => "a functional interface has exactly one abstract method"
只要符合上述原則,下面的例子使用了 default method 仍然是一個有效的 functional interface
@FunctionalInterface public interface SubFunctionalInterface extends TestFunctionalInterface { default public void test2() { System.out.println("test2"); } }Java 8 定義了許多通用函式介面, 置放於 java.util.function package 中, 開發者可視狀況需求使用所需的 interface
0 comments:
Post a Comment