在 Java 中將方法作為引數傳遞
本教程介紹在 Java 中將方法作為引數傳遞。為了幫助你進一步理解此主題,我們提供了示例程式碼。
從頭開始,Java 中沒有將方法作為引數傳遞的概念。但是,我們可以通過使用 Java 8 中的 lambda 函式和方法引用來實現這一點。因此,在本文中,我們將更多地關注這兩個主題,將方法作為引數傳遞。
lambda 函式或 lambda 表示式是 Java 8 中引入的一個概念。它是一種遵循函式風格方法編寫函式的簡潔方法。由於 Java 和 Java 8 被認為是物件導向的語言,因此它們支援編寫程式碼的函式式方法。
在 Java 中使用 lambda
函式將方法作為引數傳遞
這是 lambda 的一個簡單示例,我們使用它來迭代 ArrayList
元素。請注意,我們將 lambda 函式傳遞給 Iterable
介面的 forEach()
方法。ArrayList
類實現了 Iterable
介面。
所以這就是我們如何在 Java 中將方法(lambda 函式)作為引數傳遞:
public class SimpleTesting{
public static void main(String[] args) {
ArrayList<Integer> evens = new ArrayList<Integer>();
evens.add(10);
evens.add(20);
evens.add(30);
evens.add(40);
evens.forEach( (n) -> { System.out.println(n); } ); // passing lambda as a parameter
}
}
輸出:
10
20
30
40
將方法作為引數傳遞給 Java 中的自定義方法
除了內建方法 forEach()
,我們可以將它作為引數傳遞給自定義方法。在這個例子中,我們建立了一個介面 Doable
,它有一個方法 doSomething()
。在 SimpleTesting
類中,我們有一個呼叫 doSomething()
方法的方法 show()
。在 main() 方法中,我們建立了一個 lambda 函式並將其傳遞給 show()
方法。
請注意,這是我們將方法(lambda 函式)作為引數傳遞給方法的行。
show("Hello", doa); // passing lambda function as parameter
interface Doable{
String doSomething(String str);
}
public class SimpleTesting{
public static void main(String[] args) {
Doable doa = (str)-> str+" Rohan";
show("Hello", doa); // passing lambda function as parameter
}
public static void show(String msg, Doable doa) {
String greeting = doa.doSomething(msg);
System.out.println(greeting);
}
}
輸出:
Hello Rohan
使用 Java 中的方法引用將方法作為引數傳遞
這是另一種可用於將方法作為引數傳遞給方法的解決方案。它還在 Java 8 版本中與 lambda 函式一起引入。在此示例中,我們使用方法引用概念將 show()
方法作為引數傳遞給 Thread()
建構函式,該建構函式在執行時執行。在此處檢視程式碼示例的輸出:
public class SimpleTesting{
public static void main(String[] args) {
// Passing method reference as a parameter
Thread thread = new Thread(SimpleTesting::show);
thread.start();
}
public static void show() {
System.out.println("My Thread");
}
}
輸出:
My Thread