Optional.ofNullable().map
时间: 2024-12-28 15:19:17 浏览: 4
### Java `Optional.ofNullable().map` 方法详解
#### 方法概述
`Optional.ofNullable()` 创建一个可能为空的 `Optional` 实例。当传入的对象为 `null` 时,返回的是一个空的 `Optional` 而不是抛出异常。这有助于防止潜在的 `NullPointerException`。
`map()` 函数则用于转换 `Optional<T>` 中的内容到另一个类型的 `Optional<U>`。如果当前 `Optional` 是空,则不会执行任何操作并保持为空;否则会应用给定函数来映射内部值[^1]。
#### 示例代码展示
下面是一个具体的例子说明如何使用这两个方法:
```java
import java.util.Optional;
class Student {
private String name;
public Student(String name) { this.name = name; }
public String getName() { return name; }
}
public class Main {
public static void main(String[] args) {
// 非空Student对象的情况
Student student = new Student("Alice");
// 输出 Alice
System.out.println(
Optional.ofNullable(student)
.map(s -> s.getName())
.orElse("No Name")
);
// 空Student对象的情况
Student studentNull = null;
// 输出 No Name
System.out.println(
Optional.ofNullable(studentNull)
.map(Student::getName)
.orElse("No Name")
);
}
}
```
在这个例子中,对于非空的学生实例,程序成功获取到了学生的名字 "Alice" 并打印出来。而对于设置成 `null` 的 `studentNull` 变量,在调用了 `.map(Student::getName)` 后由于其原始值即为 `null` ,所以最终通过 `orElse("No Name")` 返回了一个默认字符串 `"No Name"` 来代替缺失的数据[^2]。
阅读全文