首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么在Optional.ofNullable上使用Optional.of?

为什么在Optional.ofNullable上使用Optional.of?
EN

Stack Overflow用户
提问于 2015-07-29 17:30:58
回答 3查看 160.3K关注 0票数 282

在使用Java8 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,并始终保持安全呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-29 17:35:02

你的问题是基于这样的假设,即可能抛出NullPointerException的代码比可能不抛出的代码更糟糕。这个假设是错误的。如果由于程序逻辑的原因,您希望您的foobar永远不会为空,那么最好使用Optional.of(foobar),因为您将看到一个NullPointerException,它将指示您的程序有一个bug。如果您使用Optional.ofNullable(foobar),而由于错误而foobar恰好是null,那么您的程序将默默地继续不正确地工作,这可能是更大的灾难。这样一来,错误可能会出现得晚很多,并且很难理解错误发生在哪一点。

票数 380
EN

Stack Overflow用户

发布于 2019-07-24 15:21:00

这取决于场景。

假设您有一些业务功能,并且需要进一步处理具有该值的内容,但在处理时使用null值会对其产生影响。

然后,在这种情况下,您可以使用Optional<?>

String nullName = null;

String name = Optional.ofNullable(nullName)
                      .map(<doSomething>)
                      .orElse("Default value in case of null");
票数 1
EN

Stack Overflow用户

发布于 2018-09-11 18:58:07

Optional应该主要用于服务的结果。在该服务中,您知道手头有什么,如果有结果,则返回Optional.of( someValue ),如果没有,则返回Optional.empty()。在这种情况下,someValue永远不应该为null,并且仍然返回可选的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31696485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档