河曲智叟 发表于 2022-8-30 21:33:46

Optional类中map和flatMap的区别

转自:
http://www.java265.com/JavaCourse/202206/3666.html
Optional是一个容器对象,可以包含也可以不包含非null值。Optional在Java 8中引入,目的是解决  NullPointerExceptions的问题。本质上,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<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());
    }
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Optional类中map和flatMap的区别