Javaのラムダ式(Lambda Expressions)は、Java 8から導入された主要な機能であり、関数型プログラミングの要素をJavaに導入しました。ラムダ式は、無名の関数(匿名関数)を簡潔に記述できる方法です。ラムダ式は、関数型インタフェース(Functional Interface)を実装するためのコードブロックを提供する。
以下にラムダ式の基本的な構文と使用方法を説明します:
- ラムダ式の構文: ラムダ式は次の構文を持ちます:
(パラメータリスト) -> { ボディ }
- パラメータリスト: ラムダ式が受け入れるパラメータを指定します。パラメータがない場合、空のカッコ
()
を使用できます。 - ボディ: ラムダ式の本体であり、実行されるコードブロックを指定します。
- ラムダ式の使用例: ラムダ式は主に関数型インタフェースと一緒に使用されます。関数型インタフェースは、抽象メソッドを1つだけ持つインタフェースです。例:
Runnable
インタフェースを使用したラムダ式
Runnable task = () -> {
System.out.println("Hello, Lambda!");
};
- このラムダ式は、
Runnable
インタフェースのrun
メソッドを実装します。 - ラムダ式の利点:
- 簡潔さ: ラムダ式を使用すると、冗長なコードを削減できます。
- 関数型プログラミング: ラムダ式は関数型プログラミングの要素を提供し、コードの可読性とメンテナンス性を向上させます。
- 並列処理: ラムダ式は並列処理(parallel processing)の実装に役立ちます。
- 関数型インタフェース: ラムダ式は関数型インタフェースと一緒に使用されます。Java 8の標準ライブラリには、
java.util.function
パッケージ内で多くの組み込みの関数型インタフェースが提供されています。例えば、Consumer
、Predicate
、Function
などがあります。
// Consumerインタフェースを使用したラムダ式
Consumer<String> printString = s -> System.out.println(s);
// Predicateインタフェースを使用したラムダ式
Predicate<Integer> isEven = n -> n % 2 == 0;
// Functionインタフェースを使用したラムダ式
Function<Integer, String> convertToString = n -> "Number: " + n;
ラムダ式はJavaプログラミングの柔軟性を向上させ、関数型プログラミングのパラダイムをサポートします。これにより、コードがより読みやすく、簡潔になり、一部のケースでは効率的な並列処理が可能になります。