【发布时间】:2019-01-09 02:13:31
【问题描述】:
我已经阅读了关于Optional.orElse() 和Optional.orElseGet() 之间区别的question 的答案。
由于惰性评估,orElseGet() 似乎总是比 orElse() 更有效,即使在对像这样非常简单的示例进行基准测试时也明显可见(参见第 4 部分):https://www.baeldung.com/java-optional-or-else-vs-or-else-get
那么,有没有使用orElse 而不是orElseGet 更好的用例?
【问题讨论】:
-
也许 Optional 为空的可能性更高。
-
就像链接所说的:“默认情况下,每次使用 orElseGet() 会更有意义除非默认对象已经构建并且可以直接访问。”
-
当您已经承担了创建对象的成本时,这才有意义。否则,您可以将对象创建延迟到实际需要为止。