栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java8新特性】Optional类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java8新特性】Optional类

文章目录
  • 1 概述
  • 2 Optional类的方法
  • 3 总结
  • 参考资料

1 概述
  • 到目前为止,臭名昭著的空指针异常是导致Java应用程序失败的最常见原因。以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类, Guava通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的代码。受到GoogleGuava的启发,Optional类已经成为Java8类库的一部分。
  • Optional类(java.util.Optional) 是一个容器类,它可以保存类型T的值,代表这个值存在。或者仅仅保存null,表示这个值不存在。原来用 null 表示一个值不存在,现在Optional 可以更好的表达这个概念。并且可以避免空指针异常。
  • Optional类的Javadoc描述如下:这是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。
2 Optional类的方法

@Test
public void test1() {
    Girl girl = new Girl();
    // of(T t):保证t是非空的
    Optional optionalGirl = Optional.of(girl);
    System.out.println(optionalGirl);
}

@Test
public void test2() {
    Girl girl = new Girl();
    // ofNullable(T t):t可以为null
    girl = null;
    Optional optionalGirl = Optional.ofNullable(girl);
    System.out.println(optionalGirl);
    // orElse(T t1):如果当前的Optional内部封装的t是非空的,则返回内部的t;
    // 如果内部封装的t是空的,则返回orElse(T t1)方法中的参数t1
    Girl girl1 = optionalGirl.orElse(new Girl("桥本环奈"));
    System.out.println(girl1);
}

// 多重if判断非空
public String getGirlNameV1(Boy boy) {
    if (boy != null) {
        Girl girl = boy.getGirl();
        if (girl != null) {
            return girl.getName();
        }
    }
    return null;
}

@Test
public void test3() {
    Boy boy = new Boy();
    boy = null;
    String girlName = getGirlNameV1(boy);
    System.out.println(girlName);
}

// 使用Optional类避免空指针和多重if判断
public String getGirlNameV2(Boy boy) {
    Optional boyOptional = Optional.ofNullable(boy);
    // 此时的boy1一定非空
    Boy boy1 = boyOptional.orElse(new Boy(new Girl("高圆圆")));

    Girl girl = boy1.getGirl();
    Optional girlOptional = Optional.ofNullable(girl);
    // 此时的girl1一定非空
    Girl girl1 = girlOptional.orElse(new Girl("邱淑贞"));
    return girl1.getName();
}

@Test
public void test4() {
    Boy boy = null;
    boy = new Boy();
//        boy = new Boy(new Girl("石原里美"));
    String girlName = getGirlNameV2(boy);
    System.out.println(girlName);
}
3 总结
  • Optional类是为了在程序中避免出现空指针异常而创建的。也是为了省略多重的 if 判断。
  • 常用方法:ofNullable(T t),orElse(T t)
参考资料
  1. 尚硅谷Java零基础入门教程(含百道Java真题,2万多行Java代码实战)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/287068.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号