它在java 8中首次引入。函數式介面可以定義為具有單一抽象方法的介面。這意味著 java 中的函數式介面僅提供單一的基本功能。但是,除了單一抽象方法之外,函數式介面還可以包含靜態方法和預設方法。 java.util.function.Function、java.util.function.Predicate、UnaryOperator、BinaryOperator、Supplier、Consumer 是 java 中內建函數式介面的範例。
開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
下面給了基本語法:
public interface MyFunctionalInterface(){ // abstract method public void functionalMethod(); }
從上面的語法中,我們可以看到名為MyFunctionalInterface的介面只包含一個未實現的方法;這就是為什麼它可以被視為一個函數式介面。 它也可以包含靜態和預設方法,如下所示:
public interface MyFunctionalInterface(){ public default void defaultMethod(){ // default method logic goes here } public static void staticMethod(){ // static method logic goes here } // abstract method public void functionalMethod(); }
此外,可以使用 Lambda 表達式來實作函數式接口,如下所示:
MyFunctionalInterface functionalInterface = () ->{ // basic functionality logic goes here }
我們也可以使用註解或將介面宣告為函數式介面。以下是如何使用註解宣告函數式介面:
MyFunctionalInterface functionalInterface = () ->{ // basic functionality logic goes here }
@FunctionalInterface 是在 java 8 中引入的,用於在介面違反函數式介面規則時出現編譯器層級錯誤。使用@FunctionalInterface註解聲明介面使得介面具有功能性,如果使用多個抽象方法,則會產生編譯錯誤。
以下是一些要點:
例:
@FunctionalInterface public interface MyFunctionalInterface(){ // abstract method public void functionalMethod(); @Override public boolean equals(Object object); //method overridden from parent class }
由於上述介面重寫了父類別的方法,並且沒有聲明多個抽象方法,因此可以將其視為函數式介面。
現在我們將看到顯示 java 函數式介面的宣告和使用的 java 程式碼範例。
在這個範例中,我們將展示如何使用內建函數介面 java.util.function.function 介面。這是Function介面的聲明。
介面:
package java.util.function; public interface Function<T,R>{ public <R> apply(T inputparams); }
為了使用上面的接口,我們需要在我們的類別中實作它,如下所示。
代碼:
import java.util.function.*; public class FunctionalInterfaceDemo implements Function<Integer, Integer>{ @Override public Integer apply (Integer n){ return n*n; } public static void main (String args[]){ FunctionalInterfaceDemo demo = new FunctionalInterfaceDemo (); Integer sqroot= demo.apply(12); System.out.println("Square root of 12 is " + sqroot); } }
輸出:
在此範例中,我們將了解如何使用 lambda 表達式建立這些介面。
代碼:
public class FunctionalInterfaceDemo{ public static void main (String args[]){ // creating functional Interface instance Runnable r = () -> {System.out.println ("Executing Thread........");}; new Thread(r).start(); } }
輸出:
在這個例子中,我們將看到使用另一個內建介面消費者來迭代列表。
代碼:
import java.util.function.*; import java.util.*; public class FunctionalInterfaceDemo{ public static void main (String args[]){ List<String> list = new ArrayList<String>(); list.add("One"); list.add("Two"); list.add("Three"); list.add("Four"); list.add("Five"); list.add("Six"); // Iterate arraylist using consumer list.forEach(new Consumer<String>(){ @Override public void accept(String item){ System.out.println(item); } }); } }
輸出:
上面的文章讓我們對java中的函數式介面有了清楚的認識。使用 java 8 函數式介面的主要優點是支援 lambda 表達式,從而消除了大量樣板程式碼,從而開發出小型、高效且簡潔的程式碼。
以上是Java 中的函數式介面的詳細內容。更多資訊請關注PHP中文網其他相關文章!