Gio*_*ato 5 java lazy-evaluation optional
是否java.util.Optional只有在需要时才进行评估?
我需要将传递Optional给(我无法更改的API的)方法,该方法可能会也可能不会使用那个值Optional。由于值是由一个重运算来计算,我想以计算值,只有当(如果)它是需要的,例如呼叫get(),orElseGet(),ifPresent()等。
有点像Optional.ofLazy(Supplier<T> computeValue)。
你想要的是Supplier返回一个Optional. Supplier制作懒惰的部分。
概念代码:
Foo heavyComputation() { ... }
void main() {
Supplier<Optional<Foo>> sup = () -> heavyComputation();
doSomethingWhichMayNeedHeavyResult(sup);
}
void doSomethingWhichMayNeedHeavyResult(Supplier<Optional<Foo>> sup) {
if (electricityIsTooCheap) {
Foo foo = sup.get().get().orElse(null); // This will lazy load.
}
}
Run Code Online (Sandbox Code Playgroud)
为简洁起见,我还想将两者合二为一,但我想稍后会出现。
| 归档时间: |
|
| 查看次数: |
796 次 |
| 最近记录: |