11月26日(木)1、2コマ目

今日、やったこと

  • ラムダ式+HashMapの確認テスト
  • 関数型インタフェース

今日の確認テスト

正10角形の面積を求める計算式が間違ってました。ごめんなさい。

とりあえず、ソースコードを公開しておきます。

IFigureAreaインタフェース

図形の面積計算クラスたちの共通インタフェース。

図形毎にこのインタフェースを実装して・・ではなく、実装メソッドが1つだけなので、ラムダ式を使って実装からインスタンス生成までできる。


Serviceクラス

IFigureAreaインタフェースをラムダ式で実装、インスタンス生成を行う。

生成したインスタンスはHashMapでキーとともに管理する。


あと、サーブレット等もありますが、大したことはないので公開しません。


今日のホワイトボード

関数型インタフェース

実装すべきメソッドが1つだけのインタフェースを「関数型インタフェース」と呼びます。

図 関数型インタフェース


標準関数型インタフェース

結局、関数型インタフェースは

  • 引数
  • 戻り値

の違いしかありません。ラムダ式で実装、インスタンス生成をすることを考えると、インタフェース名やメソッド名はなんでもいいことになります。

そこで、ありがちな引数、戻り値の組み合わせであらかじめ関数型インタフェースをjava.util.functionパッケージに用意してくれています。これを標準関数型インタフェースと呼びます。

図 標準関数型インタフェース


時間のフォーマット変換器に標準関数型インタフェースを使う

図のようなIConverterインタフェースを作りましたが、このインタフェースのメソッドは

引数・・int型1つ

戻り値・・String型

です。標準関数型インタフェースのなかから、この引数・戻り値の組み合わせとおなじインタフェースを探すと、IntFunctionになります。

ちなみにIntFunctionの実装メソッドはapply()です。

図 時間のフォーマット変換に標準型インタフェースを使う
IConverterインタフェースの代わりにIntFunctionインタフェースを使うことになったため、Serviceクラスを変更します。

Serviceクラス(IConverter=>IntFunction)



コメント

このブログの人気の投稿

10月20日(火)1、2コマ目

10月15日(木)1、2コマ目

12月24日(木)1、2コマ目