Java でメソッドをパラメータとして渡す
-
Java で
lambda
関数を使用してメソッドをパラメーターとして渡す - 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