Optional对象
时间: 2024-08-28 22:00:50 浏览: 43
Optional对象是Java 8中引入的一个容器类,用于包含可能为null的值,其主要目的是为了减少空指针异常(NullPointerException)的发生。Optional对象可以包含一个非null的引用,或者什么也不包含(即为空)。它提供了一系列的方法来处理可能的空值情况,从而让代码更加简洁和安全。
Optional类有几个关键方法:
1. of():这个方法接受一个非null的值,并返回一个Optional对象。如果传入的值为null,则会抛出NullPointerException。
2. ofNullable():这个方法接受一个可能为null的值,并返回一个Optional对象。如果传入的值为null,它会返回一个空的Optional对象。
3. get():这个方法返回Optional对象中的值。如果Optional对象为空,则会抛出NoSuchElementException。
4. isPresent():这个方法检查Optional对象是否有值,如果有值则返回true,否则返回false。
5. ifPresent(Consumer<T> consumer):如果Optional对象有值,就对该值执行传入的Consumer操作,否则不执行任何操作。
6. orElse(T other):如果Optional对象有值,则返回其值,否则返回传入的其他值。
7. orElseGet(Supplier<? extends T> other):如果Optional对象有值,则返回其值,否则返回Supplier函数式接口提供的值。
8. orElseThrow(Supplier<? extends X> exceptionSupplier):如果Optional对象有值,则返回其值,否则抛出由Supplier函数式接口提供的异常。
使用Optional对象可以简化代码中的null检查,使代码更加清晰。例如,传统上你可能需要这样写代码来避免空指针异常:
```java
if (user != null && user.getAddress() != null && user.getAddress().getCity() != null) {
System.out.println(user.getAddress().getCity());
}
```
使用Optional可以这样写:
```java
Optional.ofNullable(user)
.map(User::getAddress)
.map(Address::getCity)
.ifPresent(System.out::println);
```
阅读全文