zoukankan      html  css  js  c++  java
  • Optional类

    2020.7.29

    Optional 类主要用于解决空指针异常问题:NullPointerException

    本质上是一个可选值的包装类,既可以为空也可以不为空。利用Optional可以简化代码,如解决空指针异常的代码部分。

    部分函数:

    Optional<Template> var = Optional.of(notNullValue)

    var.isPresent();//return true

    var.get()//return value值


    创建Optional实例:
    分析如下:

    @Test(expected = NoSuchElementException.class)
    public void whenCreateEmptyOptional_thenNull() {
    Optional<User> emptyOpt = Optional.empty();
    emptyOpt.get();  //此时会导致NoSuchElementException
    }

    也可以使用 of() 和 ofNullable()方法创建包含值的Optional。但是of()中的参数必须是一个定值,如果是null会抛出NullPointException.所以保险起见,我觉得ofNullable()更好用。

    访问对象值:

    String name="";

    Optional<String> opt = Optional.ofNullable(name);

    assertTrue(opt.isPresent());//验证是否为空

    assertEqual(opt.get());//取值

    注:这里检验是否有值还可以使用 isPresent()方法,该方法除了执行检查,还接受一个Consumer(消费者) 参数,如果对象不是空的,就对执行传入的 Lambda 表达式:

    opt.ifPresent( u -> assertEquals(user.getEmail(), u.getEmail()));

    这个例子中,只有 user 用户不为 null 的时候才会执行断言。

    返回默认值:

    Optional 类提供了 API 用以返回对象值,或者在对象为空的时候返回默认值。

    这里你可以使用的第一个方法是 orElse(),它的工作方式非常直接,如果有值则返回该值,否则返回传递给它的参数值:User result = Optional.ofNullable(user).orElse(user2);//如果user为空,返回user2.否则直接返回user

    第二个同类型的 API 是 orElseGet() —— 其行为略有不同。这个方法会在有值的时候返回值,如果没有值,它会执行作为参数传入的 Supplier(供应者) 函数式接口,并将返回其执行结果:

    User result = Optional.ofNullable(user).orElseGet( () -> user2);

     

    https://www.cnblogs.com/zhangboyu/p/7580262.html

  • 相关阅读:
    redis中的发布订阅(Pub/Sub)
    emmc基础技术8:操作模式3-interrupt mode
    Linux命令-tar
    git获取内核源码的方法
    Linux内核基础设施
    Linux内核简介
    emmc基础技术8:操作模式2-device identification mode
    内核子系统文档撰写方法
    eMMC基础技术6:eMMC data读写
    eMMC基础技术10:寄存器介绍
  • 原文地址:https://www.cnblogs.com/lyqf/p/13398251.html
Copyright © 2011-2022 走看看