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

Why does Java's Optional.of() won't accept null values? It's not really an "optional" value anymore then

我知道我们 Optional.ofNullable() 如果值也可以为空。我的问题是,为什么这不是 Optional.of() 的默认行为?如果一个值不能是null,为什么要放在第一个Optional?如果无论如何结果都是空的,无论如何你都会得到一个 NPE。如果你用 of() 方法构造一个 Optional,你仍然会有 Optional 包装器的所有其他方法,只有当值可以是 null 时它们才真正有用.

编辑:我在发帖前阅读了 ,但答案是 "because you catch the error sooner, and it's easier to trace it that way"。但我有点不同意这一点,也许你的堆栈跟踪中会有一些额外的行,但仍然很容易查明 NPE 的来源。

该方法用于非空参数! 那个方法的intent就是保证调用null的时候会失败!

这是关于程序员将该意图传达给 reader!

当您不知道输入的是什么,并且该输入可能为空时,您可以使用其他方法将其告知 reader。但是当你知道 "an incoming null should never occur" 时,当违反非常严格的合同时抛出异常可能是公平的。

不能为空。 Optional.ofNullable(null) returns 一个 Optional 其中 isPresent 为假,不是为真但其中有一个空值。