可选,在 orElse 之前进行额外处理

Optional with additional processing before orElse

在我的服务中,我想 return MAX+1 OR return 10000000 相反,我有 fooRepository.findMax() 其中 return 和 Optional<Long> 这是MAX.

如何像下面这样在一行中完成(我只错过了增量部分)

fooRepository.findMax().orElse(10000000L)

PS:我知道我可以在多行中使用 ifPresent ...

这似乎是一个奇怪的要求,但为什么不直接...

fooRepository.findMax().orElse(9999999L) + 1

?

您可以使用 map 方法对 Optional 的内容做一些事情。如果Optional为空,则不执行。

像这样:

fooRepository.findMax()
    .map(max -> max + 1)
    .orElse(10000000L);

这就是 map 的用途:

fooRepository.findMax().map(m -> m + 1).orElse(10000000L)