関数型インタフェースとラムダ式

https://www.casleyconsulting.co.jp/blog/engineer/114/

 

Java SE8で新しく追加されたラムダ式

正直よく分かってない。何がよくわかっていないか。それは使い道だ。これを使ってどんなメリットを享受できるのかが分からない。

オブジェクト指向と双璧をなす設計思想に関数型インタフェースがあるとか。
これ使えるにはオブジェクト指向の理解もいるのかと考える。勉強継続する。

【関数型インタフェース】
実装が必要な抽象メソッドを1つだけ持つインタフェース
Java SE8から、よく使うであろう関数型インタフェースは「java.util.function」として提供されている。

ラムダ式
・匿名クラスの代替
・関数型インタフェースとセットで使う。

■基本構文
関数型インタフェースの型 変数名 = (引数) -> {処理;};
・引数の宣言
・アロー演算子
・処理ブロック

ラムダ式の省略ルール
中カッコがある場合
・複数の処理が書ける
・戻り値を戻すreturn省略不可
中カッコがない場合
・1つの処理しか書けない
・戻り値を戻すreturn省略可能

ラムダ式の変数のスコープ
ラムダ式を囲むブロックと同じスコープになる。
ラムダ式から式を宣言しているメソッドのローカル変数にアクセスできる。ただし、実質的にfinalなローカル変数でなければならない。
---------------------------------------
public class Test{
public static void main(String[]args){
String str = "こんにちは";
Function f = () -> {
sysout(val);
};
×→str = "さようなら";
f.test();

---------------------------------------