なんだ、このタイトルは・・・。
前回、Android Studioが勝手に記述を省略して困る、という記事を書いた。
そしたら、こういうコメントをいただいた。
http://hiro99ma.blogspot.com/2015/11/android.html?showComment=1446991568776#c6414886133621877454
>Runnableが消える などは、Java8を意識したIDEの優しさみたいです。
優しさ、か。
ふっ、私にはなかなか縁のない言葉だ。
では、その思いやりを、IDEだけではなく、私が形にしてやらないと。
どうやら、これはラムダ式、とかいうものらしい。
Lambdaって書くけど、いっつもランバダと思ってしまうのよねぇ。
それはともかく、ある条件が揃うと、記述を省略できる、と私は読めた。
無名クラスで、メソッドが1つしかない、みたいなのが相当するようで、Runnableはrun()しかないため該当するようだ。
実際に書いてみると、エラーになった。
赤い電球アイコンが出てきて、それっぽい選択肢があったので選ぶと、エラーではなくなった。
でも、プロジェクトを閉じて開くと、またエラーになる。
そこでまたメニューを出して選ぶと、エラーじゃなくなる。
その状態でコンパイルすると、エラーになった。
Project Structureの、Modules>ApplicationのPropertiesタブで、"Source Compatibility"と"Target Compatibility"の候補に"8"がなかったので、手で打ち込んでみたが、やはりエラーになる。
なんだよー、あんたが8以上にしろっていったんじゃないかー
「ふん、あの葡萄は酸っぱいんだ」
私はそうつぶやいて、IDEを閉じた。
retrolambdaを使うとコンパイルできますよ。
返信削除https://github.com/orfjackal/retrolambda
ありがとうございます。
削除レトロ・ラムダ、ですか。
Java8の新しいAPIにはbackportできない、と書いてますね(backportは逆移植?)。
ああ、今のAndroid StudioではJava7になっているから、それに対応する、という役割なんですかね。
それにしても、新しい言語仕様が追加した実装でなんとかなるというのは、なかなか不思議な感覚です。
いつも使っているC/C++だったら、プリプロセスとかで対応するけど、そういうイメージなのかなぁ。
ランバダで草
返信削除いや、意外といますって!
削除https://www.google.co.jp/search?q=lambda%E5%BC%8F+%E3%83%A9%E3%83%B3%E3%83%90%E3%83%80&ie=utf-8&oe=utf-8&hl=ja
うーん、微妙な数だった・・・。