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 类



关注公众号,随时获取最新资讯

细节决定成败!
个人愚见,如有不对,恳请斧正!

posted @ 2019-12-09 23:14  一点浩然气~  阅读(367)  评论(0编辑  收藏  举报