转自:
下文笔者讲述Optional类中map和flatMap的区别说明,如下所示
map和flatMap的区别 map方法:接受一个映射函数参数,返回一个被Optional包装的结果。若结果为空,则返回 空Optional flatMap方法:接受一个返回值为Optional的映射函数参数,该返回值亦是flatMap方法的返回值 若结果为空,则返回 空Optional。
例
public class User { String name; Integer age; public User(){ } public User(String name, Integer age){ this.name = name; this.age = age; } ... // getter setter } @Test void mapOptionalTest(){ User user = new User("java265.com",88); Optional<Optional<String>> optionalOptional = Optional.ofNullable(user).map(this::getName); Optional<String> mapOptional = Optional.ofNullable(user).map(s -> s.getName()); Optional<String> flatOptional = Optional.ofNullable(user).flatMap(this::getName); } private Optional<String> getName(User user){ return Optional.ofNullable(user).map(s -> s.getName()); }