• 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

  • 相关阅读:
    Unix系统中system函数的返回值
    vim 插件 for gbasic
    arch初认识
    TI IPNC Web网页之进阶修改
    Ti IPNC Web网页之ActiveX控件
    TI IPNC Web网页之网页修改教程
    OI,再见
    [OI]省选前模板整理
    OI刷题录——hahalidaxin
    51nod 小Z的trie(Trie+广义SAM)
  • 原文地址:https://www.cnblogs.com/lyqf/p/13398251.html
Copyright © 2020-2023  润新知