javaでnullチェックを行うメリットとはなんでしょうか?
またjava8で追加されたoptional型、nullチェックを強制するとはどういう意味なんでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
ベストアンサー
javaでnullチェックを行うメリットとはなんでしょうか?
nullは「値がセットされていない」を表すものです。
たとえば、入力フォームからの値を保持するBeanがあったとして、入力されなかったことを記録する必要があるケースでは、整数なども「値がない」ことを表現したいことがあります。
また、データベースの列に「nullを許可」としていた場合も同じです。
またjava8で追加されたoptional型、nullチェックを強制するとはどういう意味なんでしょうか?
ifPresent()やmap()などのメソッドを使うことで、値がnullでなかった場合だけ処理を行うという制御がシンプルに実装できます。
lang
1String hoge = getHoge(); // hogeはnullかもしれない 2if (hoge != null) { // nullチェック 3 System.out.println(hoge.length()); // hogeがnullでない時のみlengthメソッドを呼ぶ 4} 5... 6int length = -1; // nullだったらlengthは-1 7if (hoge != null) { // nullチェック 8 length = hoge.length(); // hogeがnullでない時のみlengthを取得 9}
このようなコードがあったとして、Optionalを使うとこうなります。
lang
1Optional<String> hogeOpt = Optional.ofNullable(getHoge()); // 文字列をラップする 2hogeOpt.ifPresent(hoge -> System.out.println(hoge.length())); // 文字列が存在する場合のみ実行 3... 4Optional<Integer> lengthOpt = hogeOpt.map(hoge -> hoge.length()); 5int length = lengthOpt.orElse(-1); // nullだったらlengthは-1
投稿2015/02/24 18:10
総合スコア209
0
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<T>
クラスは、ソースコード上で「中身が空(empty)かもしれない変数」を明確にし、「プログラマにチェック処理を忘れさせない」ための仕組みです。特にメソッド戻り値型に利用すると効果的です。
Optional<List> result = getAwesomeData(); //ソース上で戻り値は「無効値かもしれないリスト型」とわかる // result.size();とは呼び出せない(コンパイルエラー) // 有効なリストならその要素数を表示する、無効値ならなにもしない result.ifPresent(list -> { System.out.println("size=" + list.size()); });
下記リンクも参考になるかと思います。
投稿2015/02/25 04:24
編集2015/02/28 11:18総合スコア6191
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/02/28 10:30