有的时候博客内容会有变动,首发博客是最新的,其余博客地址可能会未同步,认准https://blog.zysicyj.top
首发博客地址
文章更新打算
系列文章地址
Java 8 引入了 Optional
类,用于解决空指针异样(NullPointerException)的问题。Optional
是一个容器类,能够蕴含一个非空的值或者示意值不存在。通过应用 Optional
,咱们能够更加优雅地解决可能为空的值,防止了繁琐的空值检查和异样解决。
上面是 Optional
类的一些罕用办法和用法:
创立
Optional
对象:- 应用
Optional.of(value)
:创立一个蕴含指定值的Optional
对象。如果传入的值为null
,则会抛出NullPointerException
。 - 应用
Optional.ofNullable(value)
:创立一个蕴含指定值的Optional
对象。如果传入的值为null
,则会创立一个空的Optional
对象。 - 应用
Optional.empty()
:创立一个空的Optional
对象。
- 应用
判断值是否存在:
- 应用
isPresent()
办法:判断Optional
对象中是否蕴含值。如果值存在,返回true
;否则,返回false
。
- 应用
获取值:
- 应用
get()
办法:获取Optional
对象中的值。如果值存在,返回该值;否则,抛出NoSuchElementException
异样。在应用get()
办法之前,最好先应用isPresent()
办法进行判断。
- 应用
解决值不存在的状况:
- 应用
ifPresent(Consumer<? super T> consumer)
办法:如果值存在,则执行指定的操作。能够传入一个Consumer
函数式接口,用于解决值存在的状况。 - 应用
orElse(T other)
办法:如果值不存在,则返回指定的默认值。 - 应用
orElseGet(Supplier<? extends T> supplier)
办法:如果值不存在,则通过指定的供给函数获取一个默认值。 - 应用
orElseThrow(Supplier<? extends X> exceptionSupplier)
办法:如果值不存在,则抛出指定的异样。
- 应用
上面是一个简略的示例,展现了 Optional
的用法:
import java.util.Optional;public class OptionalExample { public static void main(String[] args) { String value = "Hello, World!"; // 创立 Optional 对象 Optional<String> optional = Optional.of(value); // 判断值是否存在 boolean isPresent = optional.isPresent(); System.out.println("Value is present: " + isPresent); // 获取值 String retrievedValue = optional.get(); System.out.println("Retrieved value: " + retrievedValue); // 解决值存在的状况 optional.ifPresent(v -> System.out.println("Value exists: " + v)); // 解决值不存在的状况 String defaultValue = optional.orElse("Default Value"); System.out.println("Default value: " + defaultValue); // 应用函数式接口解决值不存在的状况 String suppliedValue = optional.orElseGet(() -> "Supplied Value"); System.out.println("Supplied value: " + suppliedValue); // 抛出异样解决值不存在的状况 try { String thrownValue = optional.orElseThrow(() -> new RuntimeException("Value not found")); System.out.println("Thrown value: " + thrownValue); } catch (RuntimeException e) { System.out.println("Exception: " + e.getMessage()); } }}
在这个示例中,咱们创立了一个蕴含字符串值的 Optional
对象,并演示了判断值是否存在、获取值、解决值存在和值不存在的状况的用法。
应用 Optional
能够进步代码的可读性和健壮性,防止了繁琐的空值检查和异样解决。但须要留神的是,不要滥用 Optional
,在某些状况下,应用传统的空值查看可能更加适合。
<!-- md tj.md -->
本文由mdnice多平台公布