关于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);