在Java编程中,空指针异常(NullPointerException)是开发者经常遇到的一个“坑”。为了更加优雅地处理可能为null的对象,Java 8引入了Optional类。Optional是一个可以包含也可以不包含非null值的容器对象,它提供了一种更好的方式来处理可能为null的对象,避免直接使用null值导致的空指针异常。
1.基础用法
创建Optional对象
- 使用Optional.of(T value):如果value为null,则抛出NullPointerException。
- 使用Optional.ofNullable(T value):允许value为null。
获取值
- 使用get():如果Optional对象包含值,则返回该值,否则抛出NoSuchElementException。
- 使用orElse(T other):如果Optional对象包含值,则返回该值,否则返回other。
检查值是否存在
- 使用isPresent():如果Optional对象包含值,则返回true,否则返回false。
- 使用ifPresent(Consumer consumer):如果Optional对象包含值,则执行给定的操作。
2.高阶用法
转换值
- 使用map(Function mapper):如果Optional对象包含值,则对其应用给定的函数,返回包含结果的Optional对象。
平坦化Optional
- 使用flatMap(Function> mapper):如果Optional对象包含值,则对其应用给定的函数,并返回结果Optional对象;如果结果为null,则返回一个空的Optional对象。
过滤值
- 使用filter(Predicate predicate):如果Optional对象包含的值满足给定的谓词条件,则返回该Optional对象;否则返回一个空的Optional对象。
自定义默认值
- 使用orElseThrow(Supplier exceptionSupplier):如果Optional对象不包含值,则抛出由给定的Supplier提供的异常。
代码示例汇总
3.小结
Optional类是Java 8引入的一个重要特性,它提供了一种更加优雅和安全的方式来处理可能为null的对象。通过合理使用Optional,我们可以有效减少空指针异常的发生,使代码更加健壮和易于维护。希望本文能帮助你更好地理解和应用Optional。