Javaの勉強2! effectively final のち Lambda Expressions

IntelliJ IDEA

今日もJavaの勉強。昨日TLで14が出たとかなんとか流れてたので、なんとなくIntelliJ IDEAをダウンロードして触ってみたりしながら。

IDEAなんか触感がすごくいい。最初に調べたドキュメントはやっぱりこういう感じでした。
Unit Testing and Code Coverage - IntelliJ IDEA - Confluence

Local Classes

んで。Oracleチュートリアル読んでたら、Local Classesというところで。「ブロックの中にクラス定義できるんか!」と、サンプルをIDEAでごにょごにょ触ってみてました。

effectively final

そしたら、「これはJava8だと動くよ」ってコメントアウトされてる部分があって、ほぅ・・・とアンコメントしてみたら。動いたのだけど。よく見てみると、finalついてないパラメータや変数をInnerクラス内で使ってて。はっ?ってなって、ドキュメント見なおしたら、finalとみなせるような変数はfinalついてなくてもそういう風に扱えるようになったんだよ!これを「effectively final」っていうんだヨ!って書いてあって、しばらくぼーっとしました。まじか!!

Lambda Expressions

その流れでラムダ式チュートリアルに突入。このチュートリアルめっちゃ分かりやすい!そして、なんとなく知ってたから大丈夫だろうと思ってたのに、結局衝撃を受けたのでした。いいなーラムダ。

そんな感じ。Java楽しい!