码迷,mamicode.com
首页 > 编程语言 > 详细

Java8 新特性 Optional 类

时间:2019-12-10 00:46:27      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:一个   ble   ring   空值   uav   直接   als   details   使用   

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 类

标签:一个   ble   ring   空值   uav   直接   als   details   使用   

原文地址:https://www.cnblogs.com/xdtg/p/12014085.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!