java 中Optional的用法
时间: 2023-07-09 18:15:11 浏览: 92
使用Java8中Optional机制的正确姿势
Java 8 引入了一个 Optional 类,它是一个容器对象,用于包装可能为 null 的值。Optional 对象可以包含一个非空的值,也可以为空。Optional 的使用可以避免代码中的 NullPointerException 异常。
Optional 类的主要方法包括:
1. of:创建一个包含指定非空值的 Optional 对象。
```java
Optional<String> optional = Optional.of("hello");
```
2. ofNullable:创建一个包含指定值的 Optional 对象,如果指定值为 null,则返回一个空的 Optional 对象。
```java
Optional<String> optional1 = Optional.ofNullable(null);
Optional<String> optional2 = Optional.ofNullable("world");
```
3. isPresent:判断 Optional 对象是否包含非空值。
```java
boolean present1 = optional1.isPresent(); // false
boolean present2 = optional2.isPresent(); // true
```
4. get:获取 Optional 对象中的值,如果 Optional 对象为空,则抛出 NoSuchElementException 异常。
```java
String value = optional2.get(); // "world"
```
5. orElse:获取 Optional 对象中的值,如果 Optional 对象为空,则返回指定的默认值。
```java
String defaultValue = "default";
String value1 = optional1.orElse(defaultValue); // "default"
String value2 = optional2.orElse(defaultValue); // "world"
```
6. orElseGet:获取 Optional 对象中的值,如果 Optional 对象为空,则调用指定的 Supplier 函数获取默认值。
```java
Supplier<String> supplier = () -> "default";
String value1 = optional1.orElseGet(supplier); // "default"
String value2 = optional2.orElseGet(supplier); // "world"
```
7. map:对 Optional 对象中的值进行映射操作,返回一个新的 Optional 对象。
```java
Optional<String> upperCaseOptional = optional2.map(String::toUpperCase);
```
8. filter:对 Optional 对象中的值进行过滤操作,返回一个新的 Optional 对象。
```java
Optional<String> filteredOptional = optional2.filter(s -> s.length() > 5);
```
以上就是 Optional 类的常用方法。通过使用 Optional,我们可以更加优雅地处理可能为 null 的值,避免了代码中的 NullPointerException 异常,同时也提高了代码的可读性和健壮性。
阅读全文