ラムダ式と匿名クラス


ラムダ式による関数型インターフェースの実装と匿名クラスによる実装をちょっとかじったので

アウトプットしてみる


匿名クラス


匿名クラスとは、名の通り名前を持たないクラスである。

メソッド内で1回のみの使用っていうのが一般的..

構文:    new インターフェース名



クラスをわざわざ宣言せず、一時的にメソッド内で使いたい。

そんな時に使う感じ

使いすてクラス..?みたいな認識で良いかな。

※後々に続くラムダ式と違って抽象メソッドの数は関係ない


ラムダ式

匿名クラス同様、メソッド内でクラスの宣言をして利用する式と言って良い。

Java8で追加された関数型インターフェースとの相性が◎

抽象メソッドを1つしか持たないインターフェースに有効なので注意!


式   (引数)  ->  {式};

はい。謎です


しかし、ラムダ式は短いコードで実装するのに強い


構文さえ覚えてしまえば、匿名クラスより短く書ける。下記コードについて

インターフェース型の変数に直接ラムダ式を代入し呼び出しができている 

 ラムダ式には 抽象メソッドが一つという条件があるため 

メソッド名や修飾子は推論されるため書く必要がない!

 構文さえ覚えてしまえば、匿名クラスより短く書ける。


次が以下のコード

これはJava8で追加された関数型インターフェースのfunctionを実装したコードです。


function型の変数を宣言し、ラムダ式で実装


Functionは<T,R>と引数と戻り値を指定する。

applyによって1が渡され メソッド内で文字列を結合してreturn


java8で追加された関数型インターフェースとの相性は抜群らしい。


forEachメソッド


ラムダ式は引数の型を省略することができる。


ただし、複数引数がある場合は、部分だけ省略するということはできないので注意!


数分触って覚えた感触が以上です。もっとラムダ式を勉強します





wataru's room

プログラミングや情報処理の系のアウトプットや普段生活して考えることを書くことで頭に定着させるためサイト

0コメント

  • 1000 / 1000