12月8日(火)1、2コマ目
今日、やったこと
- メソッド参照演習
- ストリームAPI
メソッド参照の演習
まずはおさらい。
|
| 図 メソッド参照 おさらい |
おまけ
引数が2つのコンストラクタは
- 引数の型はint型
- 戻り値(コンストラクタで戻り値はおかしい気がするが)はCalcurator型
です。
この組み合わせと同じメソッドを持つ関数型インタフェースは残念ながらありません。
が、引数がint型ではなく、Integer型ならBiFunction<Integer, Integer, Calcurator>型がマッチします。
問題は引数がint型ではなく、Integer型である点ですが、Javaには
- プリミティブ型=>ラッパークラスの自動変換を行うオートボクシング
- ラッパークラス=>プリミティブ型の自動変換を行うオートアンボクシング
があります。
これを使えばBiFunction<Integer, Integer, Calcurator>型で問題なしです。
|
| 図 オートボクシング、オートアンボクシング |
一応、解答例を挙げときます。
Mainクラス
標準関数型インタフェースのなかから、参照したいメソッドの引数、戻り値の組み合わせと同じメソッドを持つインタフェースを探すだけです。
IntTriFunctionインタフェース
最後のaveraeg()メソッドは引数が3つ、戻り値が型です。
残念ながら標準関数型インタフェースにはこのようなメソッドを持つインタフェースがないため、自作します。
ストリームAPI
Javaで今どきのモダンな関数型プログラミングをするための必須アイテムがストリームAPIです。
簡単に言うと、コレクション(Listとか)をループを使わずに検索したり、加工できる便利な仕組みです。
|
| 図 ストリームAPI(イメージ) |
お題「従業員リストから部署がPLANINGの人だけ検索したい」
今までのやり方
ループを使ってリストから要素を1つづつ取り出し、部署がPLANINGかチェックする。
ストリームAPIを使うと①
ループがありません。
ストリームAPIを使うと②
つなげて書くことができます。



コメント