Lambda式

Javaにおける「Lambda式」は、Java 8(2014年リリース)で導入されたモダンJavaの代表的な機能の一つであり、関数型プログラミングの要素をJavaに取り入れるための機構です。Lambda式を用いることで、匿名クラスよりも簡潔に関数的な処理を記述できるようになり、コードの可読性と保守性が向上します。


1. 基本構文

java
(引数) -> { 処理内容 }

例1:引数が1つで、処理が1行の場合(波括弧も省略可能)

java
x -> x * x

例2:引数が複数、処理が複数行の場合

java
(x, y) -> { int result = x + y; return result; }

2. Lambda式の主な用途:関数型インタフェース

Lambda式は**関数型インタフェース(Functional Interface)**と組み合わせて使われます。関数型インタフェースとは、抽象メソッドが1つだけ定義されているインタフェースのことです。

代表的な関数型インタフェース(java.util.function パッケージ)

  • Predicate<T>:真偽値を返す関数

  • Function<T, R>:Tを受け取りRを返す関数

  • Consumer<T>:Tを受け取り何も返さない関数

  • Supplier<T>:Tを返す関数


3. 使用例

例:リストの要素をフィルター(Predicate)

java
List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.stream() .filter(name -> name.startsWith("A")) .forEach(System.out::println);

この例では、name -> name.startsWith("A") がLambda式であり、関数型インタフェース Predicate<String> を実装しています。


4. Lambda式の利点

  • 匿名クラスの冗長な記述を省略

  • コードの簡素化と可読性向上

  • Stream APIなどとの連携がしやすい

  • 関数型スタイルでの記述が可能


5. 注意点

  • Lambda式は一度定義すると再利用しにくいため、単純な処理や一時的な関数に向いています

  • デバッグ時にスタックトレースが分かりにくくなることがあります。

  • 副作用のある処理には注意が必要です(関数型プログラミングの原則に反するため)。


まとめ

Lambda式は、Javaにおける関数的・宣言的なコーディングスタイルを可能にし、特にコレクション操作やイベント処理において強力な表現手段を提供します。Javaのモダンプログラミングにおいて不可欠な技術であり、Stream APIなどの新機能と組み合わせることでその真価を発揮します。

生成日:2025/05/03