使用 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
并始终保持安全?
最佳答案
您的问题是基于这样的假设,即可能抛出 NullPointerException
的代码比可能不会抛出的代码更糟糕。这个假设是错误的。如果您希望您的 foobar
由于程序逻辑而永远不会为空,那么使用 Optional.of(foobar)
会更好,因为您会看到 NullPointerException
这将表明您的程序有错误。如果您使用 Optional.ofNullable(foobar)
并且 foobar
恰好是 null
由于该错误,那么您的程序将默默地继续不正确地工作,这可能是更大的灾难。这样一来,错误可能会在很久以后才发生,并且更难理解它是在什么时候出错的。
关于java - 为什么使用 Optional.of 而不是 Optional.ofNullable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31696485/