为什么Java的Optional.of()不接受空值?然后,它不再是真正的“可选”值

Zol*_*auf 0 java optional java-8

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

编辑:我已经阅读了为什么在Optional.ofNullable上使用Optional.of?在发布此消息之前,但答案是“因为您可以更快地发现错误,并且以这种方式进行跟踪更容易”。但是我有点不同意,也许您的堆栈跟踪中会包含一些额外的行,但是仍然很容易查明NPE的来源。

Gho*_*ica 6

该方法应用于非null参数!该方法的目的是保证在使用null调用时它将失败!

关于程序员与读者交流意图!

当您不知道输入的内容是什么,并且该输入可能为null时,可以使用其他方法将其告知读者。但是,当您知道“永远不会出现传入的null”时,如果违反了非常严格的合同,可能会抛出异常。