Java 8Optional
クラスを使用する場合、値をオプションでラップする方法は 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
、安全を期さないのはなぜでしょうか?
ベストアンサー1
あなたの質問は、例外をスローする可能性のあるコードはNullPointerException
例外をスローしない可能性のあるコードよりも悪いという仮定に基づいています。この仮定は間違っています。foobar
プログラム ロジックにより が null になることは決してないと予想される場合は、 を使用する方がはるかに適切です。 が表示され、プログラムにバグがあることがOptional.of(foobar)
わかります。 を使用していて、 がバグによるものである場合、プログラムは暗黙のうちに誤った動作を続け、より大きな災害になる可能性があります。この方法では、エラーがずっと後になって発生する可能性があり、どの時点で問題が発生したかを理解するのがはるかに難しくなります。NullPointerException
Optional.ofNullable(foobar)
foobar
null