英文:
Optional with additional processing before orElse
问题
在我的服务中,我想要返回 MAX+1,或者返回 10000000。我有一个 fooRepository.findMax()
方法,它返回一个 Optional<Long>
,其中包含了最大值。
要如何在一行代码中完成,就像下面这样(我只是缺少递增部分):
fooRepository.findMax().map(max -> max + 1).orElse(10000000L)
PS:我知道我可以使用 ifPresent
在多行中实现这个。
英文:
In my service I want to return the MAX+1 OR return 10000000 instead, I have fooRepository.findMax()
which return an Optional<Long>
which is the MAX.
How to do it in just one line like below (I miss just the increment part)
fooRepository.findMax().orElse(10000000L)
PS: I know I can do it in multiple lines with ifPresent
...
答案1
得分: 3
这似乎是一个奇怪的要求,但为什么不只是这样做...
fooRepository.findMax().orElse(9999999L) + 1
?
英文:
This seems like a weird requirement, but why not just do...
fooRepository.findMax().orElse(9999999L) + 1
?
答案2
得分: 3
你可以使用 map
方法对 Optional
的内容进行操作。如果 Optional
为空,则不会执行操作。
就像这样:
fooRepository.findMax()
.map(max -> max + 1)
.orElse(10000000L);
英文:
You can use the map method to do something with the contents of the Optional. If the Optional is empty, it is not executed.
Like this:
fooRepository.findMax()
.map(max -> max + 1)
.orElse(10000000L);
答案3
得分: 3
这就是 map
的作用:
fooRepository.findMax().map(m -> m + 1).orElse(10000000L)
英文:
That's what map
is for:
fooRepository.findMax().map(m -> m + 1).orElse(10000000L)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论