Java8-返回一个空的可选
我有一个方法,我想返回一个空的可选值,因为找不到任何内容Java8-返回一个空的可选,java,java-8,optional,Java,Java 8,Optional,我有一个方法,我想返回一个空的可选值,因为找不到任何内容 @Override public Optional<Menu> findBySymbol (String symbol) { Optional<Menu> menu = StreamSupport .stream(cachedMenus.get(ALL_CURRENCIES_KEY).spliterator(), true)
@Override
public Optional<Menu> findBySymbol (String symbol) {
Optional<Menu> menu =
StreamSupport
.stream(cachedMenus.get(ALL_CURRENCIES_KEY).spliterator(), true)
.findFirst();
return menu.orElse(Optional.empty());
}
但是我得到了一个编译错误:类型不匹配:无法从可选转换到菜单
return StreamSupport.stream(cachedMenus.get(ALL_CURRENCIES_KEY).spliterator(), true)
.findFirst();
如果源为空,这将返回用可选或空可选包装的第一个元素 只需返回:
return StreamSupport.stream(cachedMenus.get(ALL_CURRENCIES_KEY).spliterator(), true)
.findFirst();
如果源为空,这将返回用可选或空可选包装的第一个元素 为什么不直接退回呢
return StreamSupport.stream(cachedMenus.get(ALL_CURRENCIES_KEY).spliterator(), true)
.findFirst();
为什么不退回呢
return StreamSupport.stream(cachedMenus.get(ALL_CURRENCIES_KEY).spliterator(), true)
.findFirst();
Optional.orElseT other返回值(如果存在),否则该参数将作为值返回。
因此,编译器希望参数类型为一个变量,该变量的类型与用于可选变量的泛型类型相同。这里有一个可选菜单,因此需要一个菜单。
鉴于此处的编译错误:
return menu.orElse(Optional.empty());
请注意,Optional的主要用途实际上是在退出时包装值,或者包装为空而不是null。
因此,要从流处理(如findFirst或findAny)中获取一个空的可选项,无需执行任何操作。
正如其他人所说,这就足够了:
return StreamSupport
.stream(cachedMenus.get(ALL_CURRENCIES_KEY).spliterator(), true)
.findFirst();
Optional.orElseT other返回值(如果存在),否则该参数将作为值返回。
因此,编译器希望参数类型为一个变量,该变量的类型与用于可选变量的泛型类型相同。这里有一个可选菜单,因此需要一个菜单。
鉴于此处的编译错误:
return menu.orElse(Optional.empty());
请注意,Optional的主要用途实际上是在退出时包装值,或者包装为空而不是null。
因此,要从流处理(如findFirst或findAny)中获取一个空的可选项,无需执行任何操作。
正如其他人所说,这就足够了:
return StreamSupport
.stream(cachedMenus.get(ALL_CURRENCIES_KEY).spliterator(), true)
.findFirst();
只需返回第一个表达式,删除最后一行。它没有任何用处。但是整个方法似乎有些过分——为什么创建一个流只是为了获取第一项?为什么创建一个并行流来返回第一项?也许你指的是芬丹?顺便问一下,为什么你要用这个符号作为方法的参数?它当前未使用!只需返回第一个表达式,删除最后一行。它没有任何用处。但是整个方法似乎有些过分——为什么创建一个流只是为了获取第一项?为什么创建一个并行流来返回第一项?也许你指的是芬丹?顺便问一下,为什么你要用这个符号作为方法的参数?它当前未使用!