首页 > 解决方案 > Java 可选:flatmap 和 orElseGet

问题描述

我已经编码:

Optional.ofNullable(this.cache.get(id))
    .orElseGet(this.referenceService.get(id));

问题是this.referenceService.get返回一个Optional.

所以,我收到了这个编译消息:

orElseGet(Supplier<? extends Reference>)类型中的方法Optional<Reference>不适用于参数 ( Optional<Reference>)

有任何想法吗?

标签: javajava-stream

解决方案


从 java 9 开始,您可以使用Optional.or()

Optional<String> foo = Optional.empty();
Optional<String> bar = Optional.ofNullable("Bar");
System.out.println(foo.or(() -> bar));

推荐阅读