質問: javaでnullチェックを行うメリットとはなんでしょうか? またjava8で追加されたoptional型、nullチェックを強制するとはどういう意味なんでしょうか?
回答: > javaでnullチェックを行うメリットとはなんでしょうか? どちらかといえば「Javaではnullチェックをしなければならない」です。nullチェックなしでメソッド呼び出しを行うと、`NullPointerException`例外がスローされます。(メリットがあるからではなく、必要なので仕方なくチェックする。) おまけ:nullを使うのはやめよう ``` List result = getAwesomeData\(\); // メソッド仕様はドキュメントを読まないとわからない // 戻り値は有効なリストかもしれないしnullかもしれない System\.out\.println\("size=" \+ result\.size\(\)\); // nullの場合はNullPointerException発生! ``` > またjava8で追加されたoptional型、nullチェックを強制するとはどういう意味なんでしょうか? Optional型、正確には`java\.util\.Optional`クラスは、ソースコード上で「中身が空\(empty\)かもしれない変数」を明確にし、「プログラマにチェック処理を忘れさせない」ための仕組みです。特にメソッド戻り値型に利用すると効果的です。 ``` Optional result = getAwesomeData\(\); //ソース上で戻り値は「無効値かもしれないリスト型」とわかる // result\.size\(\);とは呼び出せない(コンパイルエラー) // 有効なリストならその要素数を表示する、無効値ならなにもしない result\.ifPresent\(list -> { System\.out\.println\("size=" \+ list\.size\(\)\); }\); ``` 下記リンクも参考になるかと思います。 - 詳解 Java SE 8 第11回 nullチェックとOptional - Java8でのプログラムの構造を変えるOptional、ただしモナドではない - Optional 使い方編