Optional类详解

打印 上一主题 下一主题

主题 853|帖子 853|积分 2561

转自:
  http://www.java265.com/JavaCourse/202206/3817.html
下文笔者讲述jdk8中Optional关键字的功能简介说明,如下所示:
Optional关键字的功能
  1. Optional类的功能:
  2.     1.用于处理空指针异常(NullPointerException)的问题
  3.     2.Optional是一个包装类,它可包装的对象可以是空,也可以是一个存在的对象
复制代码
例: 常见的空指针异常判断示例
  1. String  pId = user.getInfo().getId().toLowerCase();
  2. //为了不产生空指针异常,我们需做以下的判断
  3. if (user != null) {
  4.     Info info = user.getInfo();
  5.     if (info != null) {
  6.         Id pid = info.getId();
  7.         if (pid != null) {  
  8.             pid = pid.toLowerCase();
  9.         }
  10.     }
  11. }
复制代码
那么,我们发现以上的代码非常的冗余,此时我们就可以使用Optional进行改写,例
  1. String pId = Optional.ofNullable(user)
  2.       .flatMap(u -> u.getInfo())
  3.       .flatMap(a -> a.getId())
  4.       .map(c -> c.toLowerCase())
  5.       .orElse("default");
复制代码
从以上Optional改写上,我们可以看出Optional写出的代码,非常的优雅
那么Optional到底如何使用呢?下文笔者将一一道来,如下所示
创建Optional实例
  1. Optional<User> emptyOpt = Optional.empty();
  2. 以上将创建一个null optional对象示例
复制代码
使用of()和ofNullable()方法创建Optional
  1. 注意事项:
  2.    of()方法,当传入一个null值时,则会包NPE(NullPointerException)异常
复制代码
例:
  1. //使用of方法创建的对象,可能报NPE异常
  2. Optional<User> opt = Optional.of(user);
  3. //此时我们需采用 ofNullable()方法创建Optional对象
  4. //才能避免报异常
  5. Optional<User> opt = Optional.ofNullable(user);
复制代码
访问Optional对象的值
  1.   String name = "java265.com";
  2.     Optional<String> opt = Optional.ofNullable(name);
  3.     assertEquals("java265.com", opt.get());
  4. 注意事项:
  5.    以上的get方法,也可能报NPE异常,此时我们需使用isPresent()进行相应的判断
  6.    User user = new User("java265.com", "8888");
  7.     Optional<User> opt = Optional.ofNullable(user);
  8.     assertTrue(opt.isPresent());
  9.     assertEquals(user.getName(), opt.get().getName());
复制代码
optional返回默认值
  1. Optional类返回默认值,可使用orElse()方法或orElseGet方法
  2. 此方法的功能为当Optional为null时,返回默认值
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

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

本版积分规则

拉不拉稀肚拉稀

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表