Streams 入门

在一次调用中处理 Optional 的存在和缺失两种情况。

✕ Java 8
Optional<User> user = findUser(id);
if (user.isPresent()) {
    greet(user.get());
} else {
    handleMissing();
}
✓ Java 9+
findUser(id).ifPresentOrElse(
    this::greet,
    this::handleMissing
);
发现此代码有问题? 告诉我们。
📏

单个表达式

两种情况在一次方法调用中处理。

📖

声明式

直接表达存在和缺失两种处理路径。

🚫

无 isPresent() 检查

避免手动 isPresent() + get() 模式。

旧方式
Optional 上的 if/else
现代方式
ifPresentOrElse()
自 JDK
9
难度
入门
Optional.ifPresentOrElse()
可用

自 JDK 9 起广泛可用(2017 年 9 月)

ifPresentOrElse() 接受一个用于存在情况的 Consumer 和一个用于缺失情况的 Runnable。这消除了对 Optional 进行 if/else 的需要。

分享 𝕏 🦋 in