在 Java 中將方法作為引數傳遞

Mohammad Irfan 2023年1月30日 2021年6月30日
  1. 在 Java 中使用 lambda 函式將方法作為引數傳遞
  2. 將方法作為引數傳遞給 Java 中的自定義方法
  3. 使用 Java 中的方法引用將方法作為引數傳遞
在 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

相關文章 - Java Method