0
0

More than 3 years have passed since last update.

通常のクラスからラムダ式に変形していく

Posted at

導入

こんにちは。けちょんです。
皆さん、ラムダ式使ってますか?
私はこれから初めて使います。ガチ素人です。

以降、変形させていく

クラス度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みたいに書けるってことかな???

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0