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()); }