Java8 新特性 Optional 类

Posted Frost Boy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java8 新特性 Optional 类相关的知识,希望对你有一定的参考价值。

Optional 类的简介

??Optional类的是来自谷歌Guava的启发,然后就加入到Java8新特性中去了。Optional类主要就是为子决解价值亿万的错误,空指针异常。
??Optional类其实就是一个可选值的包装类,说明这个类即可以有空值,也可以有对象。

Optional 简单使用

??这个类也会报空指针异常:of(),empty()

@Test
public void OptionalTest() {
    //报:NullPointerException
    //of()方法,是在传入null的时候,报错。
    Optional<String> gg = Optional.of(null);
    System.out.println(gg.get());
    
    //创建一个空的Optional类
    Optional<Object> empty = Optional.empty();
    //报:NullPointerException
    //empty取的时候,才会报错
    System.out.println(empty.get());
}

??ofNullable()方法的使用。

@Test
public void OptionalTest2() {
    //创建一个对象
    //两个都可以用
    //都不会报空指针异常
    //Sku sku = null;
    Sku sku = new Sku();
    //如果不确定是不是空的时候可以用这个方法
    Optional<Sku> optionalSku = Optional.ofNullable(sku);
    //判断optional里面的值是不是空的
    if (optionalSku.isPresent()) {
        //如果不是空的就可以取出来
        Sku sku1 = optionalSku.get();
        System.out.println(sku1);
        //如果是null的时候,不运行
        //如果不是null的时候,会运行,输出一个对象的地址
    }
}

??orElse()的使用的方法

@Test
public void optionalTest3() {
    Sku sku = new Sku();
    //getSkuName()没有值。
    Optional<String> optionalSku = Optional.ofNullable(sku.getSkuName());
    //上面getSkuName()里面没有值的时候,才输出orElse的值。
    String gg = optionalSku.orElse("上面的getSkuName里面没有值!");
    System.out.println(gg);
    //输出:上面的getSkuName里面没有值
}

??ifPresent()的使用方法

@Test
public void optionalTest4() {
    Sku sku = new Sku();
    //getSkuName()没有值。
    Optional<String> optionalSku = Optional.ofNullable(sku.getSkuName());
    //如果有值的时候,可以直接输出,但是如果没有值的时候,不会输出,并且不会报错。
    optionalSku.ifPresent(System.out::println);
}
//无输出

更多的Optional类的使用:

深入理解java8中的Optional 类



细节决定成败!

个人愚见,如有不对,恳请扶正!



以上是关于Java8 新特性 Optional 类的主要内容,如果未能解决你的问题,请参考以下文章

Java8新特性Optional类

Java8新特性 - Optional容器类

Java8新特性--Optional

Java8新特性——Optional容器类的简单应用

Java8新特性——Optional容器类的简单应用

java8 新特性 Optional容器类