概念:方法引用允許您引用方法而不執行它。
與 lambda 表達式的關係: 兩者都需要由相容的函數介面組成的目標類型上下文。
函數實例:方法引用在求值時建立函數介面的實例。
靜態方法的引用
類別名稱和方法以雙冒號(::)分隔,在 JDK 8 中插入。
可以在與目標類型相容的任何地方使用。
靜態方法引用範例
功能介面:
名稱:IntPredicate
方法:測試(int值)
參數:一個整數。
傳回:一個布林值(測試整數值的條件)。輔助類:
名稱:MyIntPredicates
實作的靜態方法:
isPrime():檢查數字是否為質數。
isEven():檢查數字是否為偶數。
isPositive():檢查數字是否為正。主要方法:
名稱:numTest()
參數:
對 IntPredicate.
介面的引用 正在測試的整數。執行:
在 main() 方法中,使用 numTest() 執行了三個測試。
對於每個測試,都會將特定的方法引用(isPrime、isEven、isPositive)作為執行參數傳遞。
// 示範對靜態方法的引用。
// 使用
進行操作的數字謂詞的函數接口
// 整數值。
介面 IntPredicate {
布林測試(int n);
}
// 類別定義了三個檢查整數的靜態方法
// 與某些條件相關。
類別 MyIntPredicates {
// 一個靜態方法,當數字為質數時傳回 true。
靜態布林 isPrime(int n) {
if(n
for(int i=2; i
if((n % i) == 0)
回傳錯誤;
}
返回真;
}
// 靜態方法,當數字為偶數時傳回 true。
靜態布林 isEven(int n) {
回 (n % 2) == 0;
}
// 一個靜態方法,當數字為正數時傳回 true。
靜態布林 isPositive(int n) {
返回n> 0;
}
}
類別 MethodRefDemo {
// 此方法有一個函數式介面作為其型別
// 第一個參數。因此,您可能會收到
的參考
// 此介面的任何實例,包括建立的
// 透過方法引用。
static boolean numTest(IntPredicate p, int v) {
返回 p.test(v);
}
public static void main(String args[])
{
布爾結果;
// 這裡,對 isPrime 方法的參考傳遞給 numTest().
結果 = numTest(MyIntPredicates::isPrime, 17);
if(result) System.out.println("17 是質數。");
// 然後使用 isEven 方法的參考。
結果 = numTest(MyIntPredicates::isEven, 12);
if(result) System.out.println("12 是偶數。");
// 現在傳遞了 isPositive 方法的參考。
結果 = numTest(MyIntPredicates::isPositive, 11);
if(result) System.out.println("11 是正數。");
}
}
靜態方法 isPrime() 的參考是作為參數傳遞給 numTest() 方法。
isPrime() 方法與 IntPredicate 函數介面相容。
表達式 MyIntPredicates::isPrime 建立一個引用,其中 isPrime() 實作 IntPredicate 的 test() 方法。
對 numTest() 的其他呼叫遵循相同的相容性和操作原理。
任何具有布林簽章 test(int n) 的方法都可以用作 IntPredicate 介面的參考。
以上是方法參考的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

本文使用lambda表達式,流API,方法參考和可選探索將功能編程集成到Java中。 它突出顯示了通過簡潔性和不變性改善代碼可讀性和可維護性等好處

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用選擇器和頻道使用單個線程有效地處理多個連接的Java的NIO API,用於非阻滯I/O。 它詳細介紹了過程,好處(可伸縮性,性能)和潛在的陷阱(複雜性,

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文詳細介紹了用於網絡通信的Java的套接字API,涵蓋了客戶服務器設置,數據處理和關鍵考慮因素,例如資源管理,錯誤處理和安全性。 它還探索了性能優化技術,我


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

記事本++7.3.1
好用且免費的程式碼編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),