转自:

http://www.java265.com/JavaCourse/202206/3666.html

Optional 类简介:

Java8 新增了非常多的特性,而Optional 类就是其中一个新增的类

Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。

Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。

Optional 类的引入很好的解决空指针异常

下文笔者讲述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> optionalOptional = Optional.ofNullable(user).map(this::getName);        Optional mapOptional = Optional.ofNullable(user).map(s -> s.getName());        Optional flatOptional = Optional.ofNullable(user).flatMap(this::getName);    }     private Optional getName(User user){        return Optional.ofNullable(user).map(s -> s.getName());    }