gpt4 book ai didi

java - 如何使用 Java 8 Optionals,如果所有三个都存在则执行一个 Action ?

转载 作者:IT老高 更新时间:2023-10-28 20:29:30 24 4
gpt4 key购买 nike

我有一些使用 Java Optionals 的(简化的)代码:

Optional<User> maybeTarget = userRepository.findById(id1);
Optional<String> maybeSourceName = userRepository.findById(id2).map(User::getName);
Optional<String> maybeEventName = eventRepository.findById(id3).map(Event::getName);

maybeTarget.ifPresent(target -> {
maybeSourceName.ifPresent(sourceName -> {
maybeEventName.ifPresent(eventName -> {
sendInvite(target.getEmail(), String.format("Hi %s, $s has invited you to $s", target.getName(), sourceName, meetingName));
}
}
}

不用说,这看起来和感觉都很糟糕。但是我想不出另一种方法来以更少嵌套和更易读的方式来做到这一点。我考虑流式传输 3 个 Optional,但放弃了执行 .filter(Optional::isPresent) 然后 .map(Optional::get) 感觉更糟的想法。

那么有没有更好、更“Java 8”或“Optional-literate”的方式来处理这种情况(本质上是计算最终操作需要多个 Optional)?

最佳答案

我认为流式传输三个 Optional 有点矫枉过正,为什么不简单

if (maybeTarget.isPresent() && maybeSourceName.isPresent() && maybeEventName.isPresent()) {
...
}

在我看来,与使用流 API 相比,这更清楚地说明了条件逻辑。

关于java - 如何使用 Java 8 Optionals,如果所有三个都存在则执行一个 Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48446622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com