java optional 用法大全 并提供demo案例
时间: 2023-08-23 19:06:13 浏览: 188
当使用Java的Optional类时,以下是一些常见的用法和示例案例:
1. 创建Optional对象:
```java
Optional<String> optionalValue = Optional.of("Hello");
Optional<String> emptyOptional = Optional.empty();
Optional<String> nullableOptional = Optional.ofNullable(null);
```
2. 判断Optional对象是否有值:
```java
Optional<String> optionalValue = Optional.of("Hello");
boolean hasValue = optionalValue.isPresent(); // true
```
3. 获取Optional对象的值:
```java
Optional<String> optionalValue = Optional.of("Hello");
String value = optionalValue.get(); // "Hello"
```
4. 获取Optional对象的值(安全方式):
```java
Optional<String> optionalValue = Optional.of("Hello");
String value = optionalValue.orElse("Default Value"); // "Hello"
Optional<String> emptyOptional = Optional.empty();
String value2 = emptyOptional.orElse("Default Value"); // "Default Value"
```
5. 如果Optional对象非空,执行操作:
```java
Optional<String> optionalValue = Optional.of("Hello");
optionalValue.ifPresent(val -> System.out.println(val)); // 输出 "Hello"
```
6. 如果Optional对象非空,执行操作;否则执行其他操作:
```java
Optional<String> optionalValue = Optional.of("Hello");
optionalValue.ifPresentOrElse(
val -> System.out.println(val),
() -> System.out.println("No value")); // 输出 "Hello"
Optional<String> emptyOptional = Optional.empty();
emptyOptional.ifPresentOrElse(
val -> System.out.println(val),
() -> System.out.println("No value")); // 输出 "No value"
```
7. 使用map转换Optional对象的值:
```java
Optional<String> optionalValue = Optional.of("Hello");
Optional<Integer> lengthOptional = optionalValue.map(String::length);
lengthOptional.ifPresent(val -> System.out.println(val)); // 输出 5
```
8. 使用flatMap转换Optional对象的值:
```java
Optional<String> optionalValue = Optional.of("Hello");
Optional<Character> firstCharOptional = optionalValue.flatMap(val -> {
if (val.isEmpty()) {
return Optional.empty();
} else {
return Optional.of(val.charAt(0));
}
});
firstCharOptional.ifPresent(val -> System.out.println(val)); // 输出 'H'
```
这些是Java Optional类的一些常见用法和示例案例。根据具体需求,你可以选择适合的用法来处理Optional对象。
阅读全文
相关推荐


















