ラムダ式による関数型インターフェースの実装と匿名クラスによる実装をちょっとかじったので
アウトプットしてみる
匿名クラス
匿名クラスとは、名の通り名前を持たないクラスである。
メソッド内で1回のみの使用っていうのが一般的..
構文: new インターフェース名
クラスをわざわざ宣言せず、一時的にメソッド内で使いたい。
そんな時に使う感じ
使いすてクラス..?みたいな認識で良いかな。
※後々に続くラムダ式と違って抽象メソッドの数は関係ない
ラムダ式
匿名クラス同様、メソッド内でクラスの宣言をして利用する式と言って良い。
Java8で追加された関数型インターフェースとの相性が◎
抽象メソッドを1つしか持たないインターフェースに有効なので注意!
式 (引数) -> {式};
はい。謎です
しかし、ラムダ式は短いコードで実装するのに強い
構文さえ覚えてしまえば、匿名クラスより短く書ける。下記コードについて
インターフェース型の変数に直接ラムダ式を代入し呼び出しができている
ラムダ式には 抽象メソッドが一つという条件があるため
メソッド名や修飾子は推論されるため書く必要がない!
構文さえ覚えてしまえば、匿名クラスより短く書ける。
次が以下のコード
これはJava8で追加された関数型インターフェースのfunctionを実装したコードです。
function型の変数を宣言し、ラムダ式で実装
Functionは<T,R>と引数と戻り値を指定する。
applyによって1が渡され メソッド内で文字列を結合してreturn
java8で追加された関数型インターフェースとの相性は抜群らしい。
forEachメソッド
ラムダ式は引数の型を省略することができる。
ただし、複数引数がある場合は、部分だけ省略するということはできないので注意!
数分触って覚えた感触が以上です。もっとラムダ式を勉強します
0コメント