为什么使用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 ,那么你的程序会默默地继续工作,这可能是一个更大的灾难。 这样一个错误可能会晚得多,很难理解到哪里出错了。