CONTENT
こんにちは、大阪エンジニアのYです。
今更にはなりますが JAVA8 で追加された「ラムダ式」について、今回実装を踏まえて紹介したいと思います。私自身も少し苦手意識があったので再度確認の意味も込めて記事にしてみました。
まず始めに「ラムダ式」とは「プログラミング言語に用意された記法の1つで、名前の無い無名関数を簡潔に定義するもの」を指します。
まずは無名関数を定義する前に、簡単なインターフェースを用意します。
次のこのインターフェースを使用して無名クラスを定義します。
実装の中身は簡素なものですが、これで無名関数の実装が完了しました。JAVA8でラムダ式の実装ができるようになるまでは、これがポピュラーな実装でした。
では早速この実装をラムダ式に書き換えていきましょう。
無名関数をラムダ式に書き換えるうえで押さえておく内容としてはたった1つ。「インターフェース 変数 = 引数 -> 処理」の形で実装を行うことです。
上記の例ではそれぞれ
・インターフェース:TestInterface
・変数:testInterface
・引数:String str
・処理:return "パラメータ:" + str;
に当たるので、その内容を上記の形に当てはめるだけ。
いきなりですが上記を踏まえ書き換えた実装が以下のようになります。
無名関数の定義で6行の実装が必要だったところが1行で同じ内容の実装ができたことが分かるかと思います。実装を読むうえではこれだけコンパクトに収まるとありがたいですよね。
(行数が多い実装は読む気力を失うので・・・。)
もう少し簡素化を進めるとすれば、ラムダ式で実装した場合、「引数」について「型」を省略することができるので以下のような実装でも問題ありません。
よりスッキリとした実装になりましたね。
ラムダ式の実装についてはあくまでも「記法の1つ」ということで必要に迫られ無かったため今まで避けて通っていましたが、実装を簡潔にできることもあり、業務で携わるアプリケーションの実装を見ると当たり前のように使用されているので流石に実装を読めないのはまずいですよね。
と言うことで、同じ理由で避けていた方、この記事がラムダ式導入のきっかけになれば幸いです。