Optional类的map和flatMap的区别
程序员文章站
2022-06-08 22:19:40
...
1. 区别
map方法接受一个映射函数参数,返回一个被Optional包装的结果。若结果为空,则返回 空Optional。
flatMap方法接受一个返回值为Optional的映射函数参数,该返回值亦是flatMap方法的返回值。若结果为空,则返回 空Optional。
2. 示例
2.1 准备类
public class Staff {
String name;
Integer age;
public Staff(){
}
public Staff(String name, Integer age){
this.name = name;
this.age = age;
}
... // getter setter
}
2.2 简单实例
@Test
void mapOptionalTest(){
Staff staff = new Staff("Jerome", 27);
Optional<Optional<String>> optionalOptional = Optional.ofNullable(staff).map(this::getName);
Optional<String> mapOptional = Optional.ofNullable(staff).map(s -> s.getName());
Optional<String> flatOptional = Optional.ofNullable(staff).flatMap(this::getName);
}
private Optional<String> getName(Staff staff){
return Optional.ofNullable(staff).map(s -> s.getName());
}