Rubyは当然として、C#でもラムダ式普通に使ってました。
ASP.NETで、Linq使ってましたし、
そこで、Javaですが、
引退する前と今で、大きな違いはstreamによるラムダ式の追加でしょうか、
その前提として、省略してもコンパイラが類推するという機能も理解必要ですね。
で、少し試してみたのですが、
うーん、ちょっとムリがあるかな。
悲しいかな、言語の思想的に苦しいねぇ、
こうして比較してみるとC#はJavaよりずっとスマートですね。
結局、単純にfor文ぶん回しても書けるんですよね、どの言語でも、
でメリットは簡略に書けるかどうか。
パフォーマンスは概して、単純なfor文の方が速いんだし、
遅いんだから、簡潔に短く書けなきゃ意味ない。
例外投入の記述をラムダ式の中で必ず処理しなきゃいけないって制約がガンかなぁ。
C#だと、メソッドにthrows Excetion って書かなくていいもの。
Javaだとそれ強要されちゃうから、C#ほど短くならないケースが多い。
単純なfor文より長くなっちゃうもの、中でtry-catchしてたら、
使う意味ないね。
iterator使わず、for文簡素に書けるし、それで充分かなあ。
それと、気になったのが、
メソッドmapToというネーミングセンスのダサさ。
Mapという単語はJavaでは既に意味ある言葉なんだから、
変換の意味でmapToって使っちゃだめでしょ。
ムリにstream使わず、commons-langの機能で済めば積極的にそれ使う。
それと実際の計算はdouble型の配列をcommons-mathを利用して演算処理するし、
Java8の新機能はあんまり使わないな。
まあ、まだsetter/getterなんの工夫もないコトしないとダメな場面もあったり、
C#のvarとは違って、省略しても類推もあまりスマートさ感じないし、
なんか古さにウンザリすることもあるけど、
簡潔じゃないけど、機能充実という過去の遺産を享受しようと思ってます。
質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。