LoginSignup
0
0

ラムダ式

Posted at

ラムダ式とは

・関数を直接表現するためのもので、引数を受け取って値を返す。
・メソッドに似ているが、名前をつける必要がなくメソッドに実装することができる。
 →従来のJavaでは、関数を表現するためにインターフェースを定義し、そのメソッドをオーバーライドするクラスを作成する必要がある。しかしラムダ式を使用することで、関数を匿名で定義し直接渡すことができる。
ラムダ式を使うことで、コードが短く、より直感的になる。

書き方

( 引数1,  引数2,・・・) -> {
    処理;
    return 戻り値
}

//例
int func = (int x) -> {return x * 2;}

省略記法

・代入文の右辺で使う場合、引数の右辺を省略可能
・引数が1つの場合は()を省略可能
・単一のreturnの場合、{}とreturnを省略可能

int func = x -> x * 2;

使用例

比較しながら使用例を確認

ラムダ式を使わない場合

interface Greeting {
    String greeting(String name);
}

public class Hello {
    public static void main(String[] args) {

        Greeting human = new Human();
        System.out.println(human.greeting("高畑")); // こんにちは高畑さん
    }
}

class Human implements Greeting {
    @Override
    public String greeting(String name) {
        return "こんにちは" + name + "さん";
    }
}

匿名クラスで書いた場合

interface Greeting {
    String greeting(String name);
}

public class Hello {
    public static void main(String[] args) {

        Greeting human = new Greeting() {
            @Override
            public String greeting(String name) {
                return "こんにちは" + name + "さん";
            }
        };
        System.out.println(human.greeting("高畑")); // こんにちは高畑さん
    }
}

ラムダ式を使った場合

interface Greeting {
    String greeting(String name);
}

public class Hello {
    public static void main(String[] args) {

        Greeting human = name -> "こんにちは" + name + "さん";
        System.out.println(human.greeting("高畑")); // こんにちは高畑さん
    }
}

ラムダ式は匿名クラスと同じく、実装クラスを作成せずにインタフェースのメソッドを使うことができます。
ラムダ式は短い記述で関数を表現することができるので、匿名クラスに比べて簡潔に書けました。

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