関数型インタフェースとラムダ式
https://www.casleyconsulting.co.jp/blog/engineer/114/
正直よく分かってない。何がよくわかっていないか。それは使い道だ。これを使ってどんなメリットを享受できるのかが分からない。
オブジェクト指向と双璧をなす設計思想に関数型インタフェースがあるとか。
これ使えるにはオブジェクト指向の理解もいるのかと考える。勉強継続する。
【関数型インタフェース】
実装が必要な抽象メソッドを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();
}
---------------------------------------