不能flatMap可选到OptionalInt(或其他可选的基元)

时间:2016-11-11 16:04:36

标签: java java-8 optional

为什么不能这样做?

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的类型?

0 个答案:

没有答案