本文共 2259 字,大约阅读时间需要 7 分钟。
Optional类是一个容器类,用于表示一个值的存在或不存在。它通过替代传统的null值,提供了更安全和直观的方式来处理缺失值。在Java编程中,尤其是在处理可选值时,Optional类是一个非常有用的工具。
Optional类提供了三种主要的创建方式:
以下是一个使用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/