Ret*_*iaf 11 java optional java-8
我读过的回答这个问题有关的区别Optional.orElse()和Optional.orElseGet().
似乎orElseGet()总是比orElse()懒惰的评估更有效,并且即使在对像这样的非常简单的示例进行基准测试时它也显而易见(参见第4部分):https://www.baeldung.com/java-optional-or-else- VS-或-ELSE-得到
那么,是否有任何使用情况,orElse而不是使用orElseGet?
orElse,因为它比它短,orElseGet并且比较它们的签名:orElse(T other)
orElseGet(Supplier<? extends T> other)
Run Code Online (Sandbox Code Playgroud)
a Supplier<? extends T> other很可能比T other.如果性能不是那么重要,您可以选择输入更少.程序员的努力也很重要:-)例如,比较:
orElseGet(() -> 1)
orElse(1)
Run Code Online (Sandbox Code Playgroud)
默认情况下,每次使用orElseGet()更有意义,除非 已经构造并直接访问默认对象.
| 归档时间: |
|
| 查看次数: |
669 次 |
| 最近记录: |