1)
[OptionalInt::of
应该接受参数int,但是为什么以下内容可以编译?
Integer boxed=2;
Optional<OptionalInt> optInt=Optional.ofNullable(boxed).map(OptionalInt::of);
[Optional.ofNullable(boxed)
应该返回Optional<Integer>
,而不是整数。
2)为什么以下内容无法编译?
Optional.ofNullable(boxed).flatMap(OptionalInt::of);
前者的工作是由于自动取消装箱。您首先获得Optional<Integer>
,然后在创建OptionalInt
时将装箱的图元取消装箱。
并且后者应该是地图,而不是flatMap。
Optional.ofNullable(boxed).map(OptionalInt::of);
1] Optional
的map
需要返回Function
的映射器? extends U
,因此允许它返回OptionalInt
。
2] Optional
的flatMap
需要返回Function
的映射器Optional<U>
。 OptionalInt
不是Optional
,因此无法将OptionalInt :: of传递给它。