我知道我们必须Optional.ofNullable()
值是否也可以为空。我的问题是,为什么这不是Optional.of()
的默认行为?如果一个值不能null
,为什么要首先放入Optional
?如果事实证明它是空的,无论如何你都会得到一个 NPE。如果使用 of()
方法构造Optional
,则仍将拥有 Optional
包装器的所有其他方法,这些方法只有在值可以null
时才真正具有目的。
编辑:在发布此内容之前,我已经阅读了为什么使用Optional.of而不是Optional.ofNullable?,但答案是"因为您更快地发现错误,并且以这种方式更容易跟踪它"。但我有点不同意这一点,也许你的堆栈跟踪中会有一些额外的行,但仍然很容易查明 NPE 的来源。
用于非空参数!该方法的目的是保证在使用 null 调用时它会失败!
这是关于程序员向读者传达这种意图!
当您不知道传入的内容并且该输入可能为 null 时,您可以使用其他方法将其告知读者。但是,当您知道"传入的 null 不应该发生"时,那么当违反非常严格的合同时抛出异常可能是公平的。
它不能为空。 Optional.ofNullable(null)
返回一个isPresent
为假的Optional
,不是为真但包含 null 的。