Java でメソッドをパラメータとして渡す

Mohammad Irfan 2023年10月12日
  1. Java で lambda 関数を使用してメソッドをパラメーターとして渡す
  2. Java のカスタムメソッドにパラメータとしてメソッドを渡す
  3. Java のメソッドリファレンスを使用してメソッドをパラメータとして渡す
Java でメソッドをパラメータとして渡す

このチュートリアルでは、Java のパラメーターとしてメソッドを渡す方法を紹介します。このトピックをさらに理解しやすくするために、サンプルコードが含まれています。

Java のパラメーターとしてメソッドを最初から渡すという概念はありません。ただし、Java 8 でラムダ関数とメソッド参照を使用することでこれを実現できます。したがって、この記事では、メソッドをパラメーターとして渡すために、これら 2つのトピックに焦点を当てます。

ラムダ関数またはラムダ式は、Java 8 で導入された概念です。これは、関数スタイルのアプローチに従って関数を記述するための簡潔な方法です。Java と Java 8 はオブジェクト指向言語と見なされるため、コードを記述するための機能的アプローチをサポートします。

Java で lambda 関数を使用してメソッドをパラメーターとして渡す

これはラムダの簡単な例であり、これを使用して ArrayList 要素を反復処理しています。ラムダ関数を Iterable インターフェイスの forEach() メソッドに渡していることに注意してください。ArrayList クラスは Iterable インターフェースを実装します。

したがって、Java でメソッド(ラムダ関数)をパラメーターとして渡す方法は次のとおりです。

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() とは別に、カスタムメソッドにパラメーターとして渡すことができます。この例では、メソッド doSomething() を持つインターフェース Doable を作成しました。SimpleTesting クラスには、doSomething() メソッドを呼び出すメソッド show() があります。main()メソッド内で、ラムダ関数を作成し、それを show() メソッドに渡しました。

これは、メソッド(ラムダ関数)をパラメーターとしてメソッドに渡す行であることに注意してください。

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 バージョンのラムダ関数で導入されました。この例では、メソッド参照の概念を使用して、実行時に実行される Thread() コンストラクターにパラメーターとして show() メソッドを渡しました。ここでコード例の出力を参照してください。

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