#導入
こんにちは。けちょんです。
皆さん、ラムダ式使ってますか?
私はこれから初めて使います。ガチ素人です。
#以降、変形させていく
##クラス度100%
まず、Ruunableインターフェースを実装したクラスは以下ですね。
class lambda implements Runnable {
@Override
public void run() {
System.out.print("OK");
}
}
インターフェース通りに、runメソッドを実装して終了です。
##クラス度60%,ラムダ度40%
Runnable runner = new Runnable() {
@Override
public void run() {
System.out.print("OKっぽい");
}
}; // OKっぽい
ここでクラスが匿名化され、インスタンス化と同じ場所で定義されています。
最後の";"は省略するとコンパイルエラーになります。誰か教えてください。
##クラス度40%,ラムダ度60%
型推論等により、冗長な部分を削除していきます。
※ここからしばらくコンパイル通りません。
Runnable runner = {
@Override
public void run() {
System.out.print("OKっぽい");
}
}; // OKっぽい
new Runnable()
は左辺から型を推測できますね。
##クラス度20%,ラムダ度80%
Runnable runner = {
{
System.out.print("OKっぽい");
}; // OKっぽい
public void run()
はRunnableインターフェースがrunメソッドしか持たないことから、わざわざ指定する必要はありませんね。
##ラムダ度100%
Runnable runner = () -> System.out.print("OKっぽい");// OKっぽい
引数を表す()->
を追加して、{}を省略して、ラムダ式の完成です。
#まとめ
JSみたいに書けるってことかな???