取 Optional 对象中的
时间: 2024-10-17 17:03:55 浏览: 8
在Java 8及以上版本中,`Optional` 类是一个可以为 `null` 的容器对象,它提供了一种更安全的方式来处理可能不存在的数据。如果你有一个可能存在 `null` 的值,使用 `Optional` 可以避免NullPointerException。获取 `Optional` 对象中的值通常有以下几种方法:
1. **`get()`**:如果 `Optional` 包含非 `null` 值,会返回该值;否则抛出 `NoSuchElementException`。这是默认的行为,不适合在不确定值是否存在的情况下使用。
```java
Optional<String> optional = Optional.ofNullable(someValue);
String value = optional.get(); // 如果someValue为null,则这里会抛出异常
```
2. **`.orElse(defaultValue)`**:如果 `Optional` 为空,会返回提供的默认值。
```java
String value = optional.orElse("default_value");
```
3. **`.orElseGetSupplier(Supplier<T>)`**:如果 `Optional` 空,会通过给定的 supplier 来获取默认值。
```java
String value = optional.orElseGet(() -> "generated_default_value");
```
4. **`.isPresent()`**:检查 `Optional` 是否包含非 `null` 值,返回一个布尔值。
5. **`.orElseThrow(Predicate<T>)`**:如果 `Optional` 为空,会根据提供的断言条件抛出异常。
6. **`.map(Function<? super T, R>)`**:如果 `Optional` 非空,应用给定的函数转换结果,然后将结果包装到一个新的 `Optional<R>` 中。
```java
Optional<String> mappedValue = optional.map(String::toUpperCase);
```
阅读全文