ブロックチェーン・AI・システム開発の株式会社INDETAIL

JAVAでのラムダ式の使い方

2015.09.17
なめ橋

こんにちは。なめ橋です。
唐突にJAVAの勉強をしたくなったので、今回はJAVA8にて導入されたラムダ式に関しての記事となります。
業務で結構Androidを触ることが多く、今回勉強したことが使えればいいなぁと思ったのですが、どうやらAndroidではJAVA8はまだ対応していないようですね。
RxJAVAとRetrolambdaを使えば使えるようですが、それはまた今後。

ラムダ式の基本構文

ラムダ式の基本構文は以下の様な感じですね。

( 実装するメソッドの引数 ) -> { 処理 }

僕も初めて"->"なんて記号を見たときは全然読めませんでした。。
といっても、実際に書いてみないとわかりにくいと思いますので、今回はボタンを押した際に発生するイベントをラムダ式で記載してみたいと思います。

重要なのは14行目で、ここでラムダ式を用いてボタンのイベントを定義しています。

わかりやすいように、通常の匿名関数で定義された場合も以下に記述致します。

なにが省略されたかというと、
・匿名クラスの宣言
・Overrideアノテーション
・Overrideするメソッド名

が省略され、残ったのは、
・Overrideするメソッドが取る引数
・イベントを受け取った際の処理
となります。
つまり、冒頭に記載した、
( 実装するメソッドの引数 ) -> { 処理 }
だけが残る形ですね。

省略について

ラムダ式は引数の有無や、型推論の機構を使うことにより、いろいろと省略することが出来ます。
これから、順々に省略していきます。
ベースとなるコードは以下になります。

その1 引数の型名の省略

引数の型名は型推論により省略することが出来ます。
そのため、2行目・8行目は以下のようになります。

また、引数が1つの場合は()も省略出来てしまいます。
ちなみに引数を持たないメソッドの場合は()は省略できないので、以下のように書きます。

この時点でコードは以下の様になります。

その2 {}の省略

if文などと同様、処理が1行で済む処理の場合は{}は省略できます。

上記サンプルの場合、ボタンの方のラムダ式は処理が2行にわたって記載されているため、省略できません。
最終的に出来上がったコードは以下になります。

streamとの連携

ラムダ式はstreamと連携することでより効率的にコードを書くことができるようです。
ただ、今回はラムダ式の基本構文ということで次回にしたいと思います。

なめ橋

2013年4月に入社。 最近ようやくiOSの開発に慣れてきた新人のエンジニアです。 髪が長くなるとなめこに似ているといわれます。

「いいね」ボタンを押すと、最新情報をすぐに確認できます。