[解決済み】なぜ、Optional.ofNullableではなく、Optional.ofを使うのですか?
2022-04-02 01:11:33
質問
Java 8を使用する場合
Optional
クラスでは、値をオプショナルでラップする方法が2つあります。
String foobar = <value or null>;
Optional.of(foobar); // May throw NullPointerException
Optional.ofNullable(foobar); // Safe from NullPointerException
なるほど
Optional.ofNullable
を使用する唯一の安全な方法です。
Optional
が、なぜ
Optional.of
は全く存在しないのでしょうか?なぜ
Optional.ofNullable
と、常に安全側に立つことができるのでしょうか?
解決方法は?
ご質問の内容は
NullPointerException
は、そうでないコードよりも悪い。この仮定は間違っています。もし、あなたが
foobar
が決して null にならないようなプログラムロジックであるならば、むしろ
Optional.of(foobar)
が表示されるので
NullPointerException
これは、あなたのプログラムにバグがあることを示しています。もし
Optional.ofNullable(foobar)
と
foobar
がたまたま
null
バグのために、あなたのプログラムは黙って不正な動作を続けることになり、より大きな災難になるかもしれません。この方法では、エラーが発生するのがずっと後になってしまい、どの時点でおかしくなったのかを理解するのがずっと難しくなってしまいます。
関連
-
[解決済み] ボタンでTextFieldをクリアする(Java)
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] なぜJava 8のOptionalは引数で使ってはいけないのか
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] Firebase クラスにシリアライズするプロパティが見つからない
-
[解決済み] getContentPane()は具体的に何をするのですか?
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] ファイルを作成せずに、ファイルが存在するかどうかをチェックする
-
[解決済み] Apache Camelのログに簡単なテキストを記録する
-
[解決済み] javaでメソッドを呼び出すプログラムのエラー修正
-
[解決済み] .lengthが解決できない、またはフィールドでない
-
[解決済み】オプショナルの使用方法