本文主要是介绍JAVA 中的Optional类详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
JAVA 中的Optional类详解
一、引言
Java 8 引入了 Optional
类,旨在提供一种更优雅的方式来处理可能为 null
的情况,从而避免 NullPointerException
。Optional
是一个容器对象,它可能包含也可能不包含非空值。使用 Optional
可以显著减少代码中的 null
检查,使代码更加简洁和安全。
二、Optional 类的基本概念
1、创建 Optional 实例
Optional
类提供了多种创建实例的方法:
empty()
:创建一个空的Optional
实例。of(T value)
:创建一个包含非空值的Optional
实例。如果传入null
,会抛出NullPointerException
。ofNullable(T value)
:创建一个可能包含null
的Optional
实例。
1.1、示例代码
Optional<String> empty = Optional.empty(); // 空实例
Optional<String> name1 = Optional.of("ning"); // 非空实例
Optional<String> name2 = Optional.ofNullable(null); // 空实例
2、访问 Optional 中的值
get()
:如果Optional
非空,返回值,否则抛出NoSuchElementException
。isPresent()
:检查Optional
是否包含非空值。ifPresent(Consumer<? super T> consumer)
:如果Optional
非空,执行给定的consumer
。
2.1、示例代码
Optional<String> name = Optional.of("ning");
if (name.isPresent()) {System.out.println("Name: " + name.get());
}name.ifPresent(System.out::println); // 打印 "ning"
三、Optional 类的高级用法
1、orElse 和 orElseGet
orElse(T other)
:如果Optional
非空,返回值,否则返回指定的默认值。orElseGet(Supplier<? extends T> other)
:如果Optional
非空,返回值,否则返回由Supplier
函数提供的值。
1.1、示例代码
Optional<String> name = Optional.ofNullable(null);
String defaultName = name.orElse("Default Name"); // 使用默认值
String lazyName = name.orElseGet(() -> "Lazy " + "Name"); // 延迟计算默认值
2、异常处理
orElseThrow(Supplier<? extends X> exceptionSupplier)
:如果Optional
非空,返回值,否则抛出由Supplier
函数提供的异常。
2.1、示例代码
Optional<String> name = Optional.ofNullable(null);
name.orElseThrow(() -> new IllegalArgumentException("Name cannot be null"));
四、总结
Optional
类是 Java 8 引入的一个非常有用的特性,它提供了一种更安全、更优雅的方式来处理可能为 null
的情况。通过使用 Optional
,我们可以减少代码中的 null
检查,使代码更加简洁和易于维护。同时,Optional
类还提供了丰富的方法,如 orElse
、orElseGet
和 orElseThrow
,使得在不同场景下处理 Optional
变得更加灵活。
版权声明:本博客内容为原创,转载请保留原文链接及作者信息。
参考文章:
- JAVA 中的Optional类理解、学习与使用
- Java 8 Optional 类
这篇关于JAVA 中的Optional类详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!