为什么使用Optional.of over Optional.ofNullable?
在使用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)
并且由于这个bug, foobar
恰好为null
,那么你的程序会默默地继续工作,这可能是一个更大的灾难。 这样一个错误可能会晚得多,很难理解到哪里出错了。