博客
关于我
Java8 | Optional类
阅读量:126 次
发布时间:2019-02-26

本文共 2213 字,大约阅读时间需要 7 分钟。

Java Optional类详解

Optional类是一个容器类,用于表示一个值的存在或不存在。它通过替代传统的null值,提供了更安全和直观的方式来处理缺失值。在Java编程中,尤其是在处理可选值时,Optional类是一个非常有用的工具。

创建Optional类对象

Optional类提供了三种主要的创建方式:

  • of(T t):创建一个包含非空值的Optional实例。调用该方法时,参数t必须非null,否则会抛出NullPointerException。
  • empty():创建一个空的Optional实例。
  • ofNullable(T t):创建一个可能包含值的Optional实例,参数t可以是null。
  • 以下是一个使用of方法创建Optional实例的示例:

    Girl girl = new Girl();Optional girlOptional = Optional.of(girl);System.out.println(girlOptional);

    以下是一个使用empty方法创建空Optional实例的示例:

    Optional emptyOptional = Optional.empty();System.out.println(emptyOptional); 以下是一个使用ofNullable方法创建Optional实例的示例: Girl girl = null;Optional girlOptional = Optional.ofNullable(girl);System.out.println(girlOptional); 判断Optional容器中是否包含对象 可以通过以下方法判断Optional容器中是否包含值: isPresent():返回true,表示Optional容器中包含一个值;返回false,表示容器为空。 ifPresent(Consumer
    consumer):如果Optional容器中有值,则执行Consumer接口的实现方法;如果没有值,则不执行。 以下是一个使用isPresent方法判断值是否存在的示例: Girl girl = null;Optional girlOptional = Optional.ofNullable(girl);boolean present = girlOptional.isPresent();System.out.println(present); 以下是一个使用ifPresent方法执行回调逻辑的示例: Girl girl = null;Optional girlOptional = Optional.ofNullable(girl);girlOptional.ifPresent(g -> System.out.println("女孩存在"));// 如果女孩不存在,不会执行上述代码 获取Optional容器的对象 如果Optional容器中包含值,可以通过以下方法获取值: get():返回Optional容器中的值。如果容器为空,则抛出NoSuchElementException异常。 orElse(T other):如果Optional容器中有值,则返回该值;如果没有值,则返回参数other。 orElseGet(Supplier
    supplier):如果Optional容器中有值,则返回该值;如果没有值,则调用supplier提供一个替代值。 orElseThrow(Supplier
    supplier):如果Optional容器中有值,则返回该值;如果没有值,则抛出由supplier提供的异常。 以下是一个使用orElse方法获取替代值的示例: Girl girl = null;Optional girlOptional = Optional.ofNullable(girl);Girl girlOrElse = girlOptional.orElse(new Girl("替代值"));System.out.println(girlOrElse); 以下是一个使用orElseGet方法获取替代值的示例: Girl girl = null;Optional girlOptional = Optional.ofNullable(girl);Girl girlOrElseGet = girlOptional.orElseGet(() -> new Girl("替代值"));System.out.println(girlOrElseGet); 以下是一个使用orElseThrow方法抛出异常的示例: Girl girl = null;Optional girlOptional = Optional.ofNullable(girl);try { Girl girlOrElseThrow = girlOptional.orElseThrow(() -> new RuntimeException("值不存在")); System.out.println(girlOrElseThrow);} catch (RuntimeException e) { System.out.println("抛出了异常:" + e.getMessage());}

    转载地址:http://ffuy.baihongyu.com/

    你可能感兴趣的文章
    OpenStack版本升级与故障排查实战
    查看>>
    Openstack的HA解决方案【替换原有的dashboard】
    查看>>
    OpenStack的基本概念与架构详解
    查看>>
    Openstack的视频学习
    查看>>
    OpenStack自动化安装部署实战(附OpenStack实验环境)
    查看>>
    openstack虚拟机迁移live-migration中libvirt配置
    查看>>
    OpenStack项目管理实战
    查看>>
    OpenStreetMap初探(一)——了解OpenStreetMap
    查看>>
    openSUSE 13.1 Milestone 2 发布
    查看>>
    openSUSE推出独立 GUI 包管理工具:YQPkg,简化了整个软件包管理流程
    查看>>
    OpenVP共用账号 一个账号多台电脑登录
    查看>>
    OpenVSwtich(OVS)Vlan间路由实战 附实验环境
    查看>>
    Openwrt LuCI模块练习详细步骤
    查看>>
    openwrt_git_pull命令提示merger冲突时如何解决?
    查看>>
    OpenWrt包管理软件opkg的使用(极路由)
    查看>>
    OpenWrt固件编译刷机完全总结
    查看>>
    Open××× for Linux搭建之二
    查看>>
    Open×××有线网络时使用正常,无线网络时使用报错的解决方案
    查看>>
    Opera Mobile Classic Emulator
    查看>>
    Operation not supported on read-only collection 的解决方法 - [Windows Phone开发技巧系列1]
    查看>>