java - How to do some operation when Optional has null value?
问题描述
In my stream I want to get MainMenuOption based on user's input. If enum MainMenuOptions contains such option I want to return it, if not - print some message "THERE IS NO SUCH OPTION" and get user's input again.
return Arrays.stream(MainMenuOptions.values())
.filter(x -> x.getCommand().equals(ConsoleInput.getNextLineFromUser()))
.findFirst() // it returns Optional<MainMenuOptions>
.orElse(); //or Else return some value, cannot do something
How I can achive it with Java Steams?
Thank you in advance.
解决方案
Use a Optional.map
operation before orElse
to transform to Optional<String>
such as
return Arrays.stream(MainMenuOptions.values())
.filter(x -> x.getCommand().equals(ConsoleInput.getNextLineFromUser()))
.findFirst()
.map(MainMenuOptions::name)
.orElse("THERE IS NO SUCH OPTION");
推荐阅读
- powershell - Azure DevOps 服务器 Invoke-RestMethod 错误:没有为“PUT”请求提供 API 版本
- amazon-web-services - 有没有一种简单的方法来克隆粘合作业,但更改数据库连接?
- python - 如何根据python中的条件从字典中的列表中删除元素
- react-native-push-notification - 当应用程序不工作时,PushNotificationIOS.getInitialNotification() 总是返回 null
- json - 如何替换存储在 JSON 文件中的 JSON 值并在 Rest Assured 测试中使用它
- javascript - XMLhttprequest 不发布(新的)
- java - 用连接表(3个表)实现一对多关系的调用数据
- selenium-webdriver - 如何从 Telerik(剑道)日期选择器中选择日期
- list - 在 List 和 NavigationLink 中使用 longPressAction
- javascript - 填写注册表单后,引导模式在同一模式上显示“注册成功”文本