【问题标题】:How does Optional class from Guava helps NPE? [duplicate]Guava 的 Optional 类如何帮助 NPE? [复制]
【发布时间】:2015-02-15 01:01:33
【问题描述】:

有人要求我更喜欢使用 Optional 类来避免空指针异常,但我不确定它会如何显着帮助,因为无论如何我们仍然必须应用检查 optional.isPresent() 以避免像空检查一样出现异常。

除非我们使用optional.or() 来覆盖一些默认值或大多数时候使用空对象,否则我认为它不是很有用。

还有其他我想看的好处吗,否则可以很容易地避免这种情况而不会产生任何额外的开销?

【问题讨论】:

  • 通过从您的方法返回可选,您强制您的客户端执行显式检查。
  • 但是我仍然可以调用 optional.get() 而不进行检查,它会抛出 IllegalStateException 而不是 NullPointerException!
  • 但是你必须打电话给get这一事实提醒你应该检查isPresent。如果没有Optional,您更有可能只是假设一切都很好,而实际上可能并非如此。

标签: java guava optional


【解决方案1】:

通过从您的方法中返回可选值,您可以强制您的客户端对缺失值执行显式检查。

只要你是唯一使用你的方法的人并且你记得空检查,一切都很好。

但是现在假设我正在使用您的 API - 我怎么知道您的方法是否可以返回 null?当然,无需阅读 javadoc。 如果我将 Optional 视为返回类型,我确切地知道这种情况可能会发生并且我可以做出反应。

【讨论】:

    猜你喜欢
    • 2012-03-22
    • 1970-01-01
    • 2013-12-12
    • 2013-09-04
    • 1970-01-01
    • 2015-03-06
    • 2016-10-04
    相关资源
    最近更新 更多