1月7日(木)1、2コマ目

今日の予習

Optional<T>クラス

java.util.Optional<T>について話をします。

サンプルソースをあげときます。

その0

Optional<T>未使用。nullを取得、toString()を呼び出すとNullPointerExceptionがスローされる。


その1

Employeeのインスタンスを保持するOptional<T>生成。

isPresent()でOptionalインスタンスがnullかチェック。


その2

orElse()でOptionalインスタンスが保持する値を取得。

Optionalインスタンスが保持する値がnullならID=0、名前=ダミーのEmployeeインスタンスを生成する。


その3 

orElseGet()でOptionalインスタンスが保持する値を取得。

Optionalインスタンスが保持する値がnullならID=0、名前=ダミーのEmployeeインスタンスを生成する。


その4

ifPresent()でOptionalインスタンスが保持する値が非nullなら表示実行。


その5

map()でOptionalインスタンスが保持する値をEmployeeからStringへ加工。


その6

filter()でOptionalインスタンスが保持する値の部署がDept.ADMINかチェック。


今日のホワイトボード

null?

Javaはプリミティブ型(intとかlogn、double)変数を除き、xxクラス型の変数にはインスタンスへの参照情報が代入される。

図 参照情報がない = nullが代入されている

上図左側のString型変数strは参照すべきインスタンスがありません。そんなときにはnullが代入されています。
参照情報がない = nullが代入されている です。

さらに参照情報がない変数strでlength()メソッドを呼び出しています。

length()はインスタンスメソッドです。

しかしながらstrが参照するインスタンスがないため、NullPointerExceptionがスローされます。


Optional<T>クラス

Optional<T>クラスのインスタンスはT型のインスタンスを1つだけ保持します。

nullを保持することもできます。

Optional<T>クラスのインスタンス生成はOptional<T>クラスのクラスメソッドを使って行います。

図 Optional<T>クラス

[おまけ]関数型インタフェース

Optional<T>クラスには引数に関数型インタフェースが指定されているメソッドがあります。
図 関数型インタフェース

map()メソッド

ストリームAPIのmap()を同じです。
入力をmap()で加工して出力します。
図 map()メソッドのイメージ




コメント

このブログの人気の投稿

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

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

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