博客
关于我
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/

    你可能感兴趣的文章
    NOIp模拟赛二十九
    查看>>
    Vue3+element plus+sortablejs实现table列表拖拽
    查看>>
    Nokia5233手机和我装的几个symbian V5手机软件
    查看>>
    non linear processor
    查看>>
    Non-final field ‘code‘ in enum StateEnum‘
    查看>>
    none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
    查看>>
    None还可以是函数定义可选参数的一个默认值,设置成默认值时实参在调用该函数时可以不输入与None绑定的元素...
    查看>>
    NoNodeAvailableException None of the configured nodes are available异常
    查看>>
    Vue.js 学习总结(16)—— 为什么 :deep、/deep/、>>> 样式能穿透到子组件
    查看>>
    nopcommerce商城系统--文档整理
    查看>>
    NOPI读取Excel
    查看>>
    NoSQL&MongoDB
    查看>>
    NoSQL介绍
    查看>>
    NoSQL数据库概述
    查看>>
    Notadd —— 基于 nest.js 的微服务开发框架
    查看>>
    NOTE:rfc5766-turn-server
    查看>>
    Notepad ++ 安装与配置教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    Notepad++在线和离线安装JSON格式化插件
    查看>>
    notepad++最详情汇总
    查看>>
    notepad++正则表达式替换字符串详解
    查看>>