当使用 Java 8 Optional
类时,有两种方法可以将值包装在可选中。
String foobar = <value or null>;
Optional.of(foobar); // May throw NullPointerException
Optional.ofNullable(foobar); // Safe from NullPointerException
我知道 Optional.ofNullable
是使用 Optional
的唯一安全方法,但为什么 Optional.of
存在呢?为什么不直接使用 Optional.ofNullable
并始终保持安全?
原文由 whirlwin 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的问题基于以下假设:可能抛出
NullPointerException
的代码比可能抛出的代码更糟糕。这个假设是错误的。如果您希望您的foobar
由于程序逻辑而永远不会为 null,那么使用Optional.of(foobar)
会更好,因为您将看到NullPointerException
程序有错误。如果您使用Optional.ofNullable(foobar)
而foobar
恰好是null
由于错误,那么您的程序可能会错误地继续工作这样一来,错误可能会在很晚的时候发生,并且很难理解它是在哪一点出错的。