【发布时间】:2020-06-17 18:21:29
【问题描述】:
在我的流中,我想根据用户的输入获取 MainMenuOption。如果枚举 MainMenuOptions 包含这样的选项,我想返回它,如果没有 - 打印一些消息“没有这样的选项”并再次获取用户的输入。
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
如何使用 Java Steams 实现它?
提前谢谢你。
【问题讨论】:
-
一个想法,返回
Optional<MainMenuOptions>并留给调用者打印任何消息。例如,调用者可以使用ifPresentOrElse()(从 Java 9 开始)。 -
如果引发
orElseThrow(()->new MenuOptionNotFoundException()),您可以抛出自定义异常并要求用户再次选择 -
这些解决方案也不错。谢谢。
标签: java java-stream optional