1. ホーム

[解決済み】なぜ、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 バグのために、あなたのプログラムは黙って不正な動作を続けることになり、より大きな災難になるかもしれません。この方法では、エラーが発生するのがずっと後になってしまい、どの時点でおかしくなったのかを理解するのがずっと難しくなってしまいます。