为什么不能这样做?
Optional<IntSupplier> supplier = Optional.of(() -> 42);
OptionalInt result = supplier.flatMap(intSupplier -> OptionalInt.of(intSupplier.getAsInt()));
java:不兼容类型:无法推断类型变量
U
(参数不匹配; lambda表达式java.util.OptionalInt
中的错误返回类型无法转换为java.util.Optional<U>
相反,您必须添加额外的步骤:
Optional<IntSupplier> supplier = Optional.of(() -> 42);
OptionalInt result = supplier
.map(IntSupplier::getAsInt)
.map(OptionalInt::of)
.orElse(OptionalInt.empty());
为什么没有更简单的方法来执行此映射,为什么不能flatMap
用于更改Optional
的类型?