12月3日(金)1、2コマ目

今日、やったこと

  • 関数型インタフェースおさらい演習
  • メソッド参照

「関数型インタフェース」おさらい課題

ソースコードを載せときます。といっても、ポイントになるのはServiceクラスだけです。

[ビジネスロジックレイア]Serviceクラス



今日のホワイトボード

メソッド参照

今までは変数に代入できるものは

  • 値(変数がプリミティブ型の場合)
  • インスタンスへの参照情報(変数がxxxクラス型の場合)

でした。

図 変数に代入できるモノ(今までは)


が、Java8からはこれらに加えて、メソッドへの参照情報も代入できるようになりました。

図 変数に代入できるモノ(いまは)
図 インスタンスへの参照とメソッドへの参照(イメージ)


メソッド参照を代入できる変数の型

関数型インタフェースを使います。

参照するメソッドの

  • 引数
  • 戻り値

が同じメソッドを持つ関数型インタフェースです。

図 メソッド参照が代入された変数でメソッド実行


例1 Stringクラスのlength()メソッド

[メソッド参照を代入する変数の型]

Stringクラスのlength()メソッドは

  • 引数はなし
  • 戻り値はint型

なので、Stringクラスのlength()メソッドへの参照情報が代入できる変数の型は

IntSupplier型(int getAsInt()メソッドを持つ)になります。


[参照情報の取得]

このlength()メソッドはインスタンスメソッドなので、

Stringクラスのインスタンスの変数名::length

です。


例2 Stringクラスのsubstring()メソッド

[メソッド参照を代入する変数の型]

Stringクラスのsubstring()メソッドは

  • 引数はint型1こ
  • 戻り値はString型

なので、Stringクラスのsubstring()メソッドへの参照情報を代入できる変数の型は

IntFunction<String>(String apply(int )メソッドを持つ)になります。


[参照情報の取得]

このsubstring()メソッドはインスタンスメソッドなので、

Stringクラスのインスタンスの変数名::substring

です。


例3 Integerクラスのコンストラクタ

[メソッド参照を代入する変数の型]

Integerクラスのコンストラクタは

  • 引数はint型1こ
  • 戻り値はInteger型(コンストラクタに引数という表現はNGな気がするが)

なので、Integerクラスのコンストラクタへの参照情報を代入できる変数の型は

IntFunction<Integer>(Integer apply(int )メソッドを持つ)になります。


[参照情報の取得]

このコンストラクタへの参照情報は

Integer::new

です。


例4 Integerクラスのmax()メソッド

[メソッド参照を代入する変数の型]

Integerクラスのmax()メソッドは

  • 引数はint型2こ
  • 戻り値はint型

なので、Integerクラスのmax()メソッドへの参照情報を代入できる変数の型は

IntBinaryOperator(int applyAsInt(int , int)メソッドを持つ)になります。


[参照情報の取得]

このmax()メソッドはクラスメソッドなので、

Integer::max

です。

コメント

このブログの人気の投稿

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

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

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