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
です。




コメント