为什么Java的Optional.of()不接受空值?那它不再是一个真正的"optional"值了



我知道我们必须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 的。

相关内容

最新更新