Optional

我们在编写代码的时候出现最多的就是空指针异常。所以在很多情况下我们需要做各种非空的判断。

ofNullable(value)方法  ->  无论value是否为空,都不会进行报错,如果是空,也不会报错(NullPointExecption异常)   

of(value)方法-> 如果是空报错(NullPointExecption异常)

of和ofNullable 联系:    ofNullable里面包含了of方法   所以建议开发中  用ofNullable()方法

  public static  Optional ofNullable(T value) {
        return value == null ? empty() : of(value);
    }

Optional.empty()  -> 返回Optional类型的空对象

我们获取到一个Optional对象后肯定需要对其中的数据进行使用。这时候我们可以使用其ifPresent方法对来消费其中的值

Optional_第1张图片

下面直接将代码运行即可

   /**
     * Optional 用法
     */
    private static void OptionalUse() {
        Author author = new Author(1L, "高鹏帅", 25, "快乐", null);        //ofNullable -> 如果有值则直接返回 ,如果没值 则返回空  也不会报错
        Optional optional = Optional.ofNullable(author);

        //orElseGet ->如果返回的有值,不是空的话,则返回值 ,如果返回来的是空值,则返回默认值  这里的默认值 需要自己去设置  如下:
        Author orElseGet = optional.orElseGet(() -> new Author(2L, "默认值", 18, "默认值", null));
        System.out.println(orElseGet);
        System.out.println("我是分割线--------------------");
        //orElseThrow ->如果返回的有值,不是空的话,则返回值 ,如果返回来的是空值,则抛出异常  需要自己去设置  如下:
        Author orElseThrow = null;
        try {
            orElseThrow = optional.orElseThrow( () -> new RuntimeException("自定义错误类型:数据为空!"));
        } catch (Throwable e) {
            throw new RuntimeException(e);
        }
        System.out.println(orElseThrow+"orElseThrow");
        System.out.println("我是分割线--------------------");
        //filter =>   filter 过滤条件满足  则返回   否则  就会返回空
        Optional filter = optional.filter(author1 -> author1.getAge() > 20);
        System.out.println(filter);
        System.out.println("我是分割线--------------------");
        //isPresent -> 判断是否有值  ,如果有值才会进行if里面  否则 则不会
        if (optional.isPresent()) {
            String name = optional.get().getName();
            System.out.println(name);

        }

    }

你可能感兴趣的:(java,开发语言,后端)