它在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 註解,則可以宣告多個抽象方法,但在這種情況下,該介面將被視為非函數式。
- @FunctionalInterface 註解的使用是可選的;它僅用於編譯器層級檢查。
- 函數式介面可以包含任意數量的靜態方法和預設方法。
- 重寫父類別的方法不會違反函數式介面的規則。
例:
@FunctionalInterface public interface MyFunctionalInterface(){ // abstract method public void functionalMethod(); @Override public boolean equals(Object object); //method overridden from parent class }
由於上述介面重寫了父類別的方法,並且沒有聲明多個抽象方法,因此可以將其視為函數式介面。
實作函數式介面的範例
現在我們將看到顯示 java 函數式介面的宣告和使用的 java 程式碼範例。
範例#1
在這個範例中,我們將展示如何使用內建函數介面 java.util.function.function 介面。這是Function介面的聲明。
介面:
package java.util.function; public interface Function<t>{ public <r> apply(T inputparams); }</r></t>
為了使用上面的接口,我們需要在我們的類別中實作它,如下所示。
代碼:
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); } }</integer>
輸出:
範例#2
在此範例中,我們將了解如何使用 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(); } }
輸出:
範例#3
在這個例子中,我們將看到使用另一個內建介面消費者來迭代列表。
代碼:
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); } }); } }</string></string></string>
輸出:
結論
上面的文章讓我們對java中的函數式介面有了清楚的認識。使用 java 8 函數式介面的主要優點是支援 lambda 表達式,從而消除了大量樣板程式碼,從而開發出小型、高效且簡潔的程式碼。
以上是Java 中的函數式介面的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版
中文版,非常好用

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具