关于Java8 optionant.of参数的问题

关于Java8 optionant.of参数的问题,java,optional,Java,Optional,(一) optionant::of应该接受参数int,但是为什么下面的代码可以编译 Integer boxed=2; Optional<OptionalInt> optInt=Optional.ofNullable(boxed).map(OptionalInt::of); 1) 可选的map()需要一个返回的映射器函数?扩展U,因此允许它返回一个选项。因此,它接受optionant::of。由于自动取消装箱,您可以将一个整数传递给optionant.of() 2) 可选的flatM

(一)

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

Integer boxed=2;
Optional<OptionalInt> optInt=Optional.ofNullable(boxed).map(OptionalInt::of);
1)
可选
map()
需要一个返回
的映射器
函数
?扩展U
,因此允许它返回一个
选项
。因此,它接受
optionant::of
。由于自动取消装箱,您可以将一个
整数
传递给
optionant.of()


2)
可选
flatMap()
需要一个映射器
函数
,该函数返回一个
可选
Optionant
不是
可选的
,因此您不能将Optionant::of传递给它。

您可以传递一个
整数
,其中需要
int
,这称为自动装箱。但是您不能传递一个
OptionalInt
,如果需要一个
Optional
,则这些不相关的类型之间没有转换。对于1,Optional.ofNullable(boxed).map(OptionalInt::of),OptionalInt::of的参数不是可选的?@user1169587()的
OptionalInt.of()的参数是
int
,因此Optionant::of可用于实现
函数
,但不能实现
函数
,这正是
flatMap
所需要的。好的,我再次检查可选的map api,“如果存在值,将提供的映射函数应用于它”,“它”是值(整数),而不是容器(可选)
Optional.ofNullable(boxed).flatMap(OptionalInt::of);