ラムダ式とは
・関数を直接表現するためのもので、引数を受け取って値を返す。
・メソッドに似ているが、名前をつける必要がなくメソッドに実装することができる。
→従来の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("高畑")); // こんにちは高畑さん
}
}
ラムダ式は匿名クラスと同じく、実装クラスを作成せずにインタフェースのメソッドを使うことができます。
ラムダ式は短い記述で関数を表現することができるので、匿名クラスに比べて簡潔に書けました。