欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

 

相关标签: java 后端