关于 Java 8 OptionalInt.of 参数的问题

Problem about argument of Java 8 OptionalInt.of

1)

OptionalInt::of应该接受参数int,但是为什么下面的可以编译?

Integer boxed=2;
Optional<OptionalInt> optInt=Optional.ofNullable(boxed).map(OptionalInt::of);

Optional.ofNullable(boxed) 应该 return Optional<Integer>,而不是 int.

2) 为什么以下不能编译?

Optional.ofNullable(boxed).flatMap(OptionalInt::of);

1) Optionalmap() 需要映射器 Function,return 是 ? extends U,因此允许 return一个 OptionalInt。因此它接受 OptionalInt::of。由于自动拆箱,您可以将 Integer 传递给 OptionalInt.of()

2) OptionalflatMap() 需要映射器 Function,return 是 Optional<U>OptionalInt 不是 Optional,因此您不能将 OptionalInt::of 传递给它。