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>クラス |
[おまけ]関数型インタフェース
![]() |
| 図 関数型インタフェース |
map()メソッド
![]() |
| 図 map()メソッドのイメージ |




コメント