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

Mohammad Irfan 2023年10月12日
  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