Java 中的方法引用提供了一種無需明確呼叫即可引用方法或建構函數的方法。它們可以被認為是編寫簡單 lambda 表達式的簡寫。
主要方法引用可以是靜態的或與實例相關:
Integer::sum; System.out::println;
這些是靜態方法引用(也稱為綁定引用)的範例。
但是,請考慮一下:
String::concat
這裡,concat 不是一個靜態方法,那麼它是如何運作的呢?這是未綁定引用的範例。編譯器根據我們程式碼的編寫方式來理解這是一個實例方法參考。這使得簡化這樣的方法呼叫成為可能。
我們編寫程式碼的方式決定了這些引用類型(尤其是未綁定的引用)。以連接為例:
((a, b) -> a + b, "Hello", "World"); // ----------------Is same as ------------- ((a, b) -> a.concat(b), "Hello", "World"); // This one could be replaced by mehod referencing // ----------------Alternative------------- (String::concat, "Hello", "World"); /* The use of 'a' as the first parameter and calling `concat `of 'a' itself gives the compiler an idea of how it should decode `String::concat`*/
因此,我們可以透過方法引用來簡化,而不是寫出完整的 lambda。
繼續學習?
以上是方法引用的混亂的詳細內容。更多資訊請關注PHP中文網其他相關文章!