当前位置: 首页 > 知识库问答 >
问题:

Java可选:flatmap和OrelGet[重复]

徐正雅
2023-03-14

我已经编码好了:

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

问题是这个。参考服务。get返回一个可选的

因此,我得到了以下信息:

方法或Elseget(供应商

有什么想法吗?


共有2个答案

翁和颂
2023-03-14
匿名用户

如果您使用的是Java 9,则可以访问可选。或,接受供应商

如果不是,则以下模式有效:

Optional.ofNullable(this.cache.get(id))
    .orElseGet(() -> this.referenceService.get(id)
        .orElseThrow(()-> new RuntimeException("Expected service to return something")));

司徒浩思
2023-03-14

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

Optional<String> foo = Optional.empty();
Optional<String> bar = Optional.ofNullable("Bar");
System.out.println(foo.or(() -> bar));
 类似资料:
  • 编译错误->[无法推断flatMap(函数>)的类型参数]

  • 为什么这段代码会抛出异常?为什么它还要去“奥雷尔斯”分店? 这是因为某种怪异的处决令吗?那么在计算orElse分支之前没有设置第一个可选项的值?

  • 对于Java流,有没有理由使用而不是和的组合? 例如使用: 或

  • 考虑一个和方法。我想将s映射到s并获得第一个。显而易见的解决方案是使用,但要求返回一个流,而没有方法(或者它是或提供一个方法将其转换为,或将其作为)查看。 我能想出的最好的办法是: 但这似乎是一个很普通的案例,但却显得太冗长了。谁有更好的主意?

  • 有人能描述一下flatMap与compactMap的这种行为吗?compactMap不是刚刚重命名为flatMap吗?因为我发现他们表现不同 这是它打印的 有人能告诉我为什么当我使用嵌套数组不扁平吗?

  • 我有以下代码,它应该从modelService返回orgId,但不能使用可选的 此代码不起作用总是返回 但是下面的代码工作得很好,不知道上面的代码有什么问题 其中总是,这是正确的代码,我只更改了一些变量名