map和flatMap的区别

打印 上一主题 下一主题

主题 609|帖子 609|积分 1827

转自:
http://www.java265.com/JavaCourse/202206/3666.html 
Optional 类简介:
        Java8 新增了非常多的特性,而Optional 类就是其中一个新增的类
       Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。
       Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
       Optional 类的引入很好的解决空指针异常 
下文笔者讲述Optional类中map和flatMap的区别说明,如下所示
  1. map和flatMap的区别
  2.    map方法:接受一个映射函数参数,返回一个被Optional包装的结果。若结果为空,则返回 空Optional
  3.    flatMap方法:接受一个返回值为Optional的映射函数参数,该返回值亦是flatMap方法的返回值
  4.      若结果为空,则返回 空Optional。
复制代码
  1.     public class User {
  2.         String name;
  3.         Integer age;
  4.         public User(){
  5.         }
  6.         public User(String name, Integer age){
  7.             this.name = name;
  8.             this.age = age;
  9.         }
  10.         ... // getter setter
  11.       
  12.     }
  13.     @Test
  14.     void mapOptionalTest(){
  15.         User user = new User("java265.com",88);
  16.         Optional<Optional<String>> optionalOptional = Optional.ofNullable(user).map(this::getName);
  17.         Optional<String> mapOptional = Optional.ofNullable(user).map(s -> s.getName());
  18.         Optional<String> flatOptional = Optional.ofNullable(user).flatMap(this::getName);
  19.     }
  20.     private Optional<String> getName(User user){
  21.         return Optional.ofNullable(user).map(s -> s.getName());
  22.     }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

写过一篇

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表